C言語のマクロについてです。C言語のマクロには落とし穴が多いので、マクロをマスターして引っかからないようにしましょう。そしてC言語の達人になってください。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
C言語の関数形式マクロの引数に、
渡さない方がよいものは、
インクリメント、デクリメントを
含む式だけではありません。
他にも、代入(+=, -=等)、入出力(getc()等)、
副作用を持つ関数の呼び出し等があります。
入出力の例を見てみましょう。
c = MAX(getc(f), c);
⇒ c = ((getc(f)) > (c) ? (getc(f)) : (c))
入力が2回行われるケースがありますね。
PR
マクロが複数行になる時は、
行の終わりにバックスラッシュ(\)をつけて改行します。
例えば、次のように使います。
#define TOTAL_NUM \
(HEADER_NUM_1 + HEADER_NUM_2 + HEADER_NUM_3 + \
BODY_NUM_1 + BODY_NUM_2 + BODY_NUM_3 + \
FOOTER_NUM_1 + FOOTER_NUM_2 + FOOTER_NUM_3)
バックスラッシュは、環境によっては
円記号(¥)と表示される場合もあります。
マクロが複数行になる時は、
行の終わりにバックスラッシュ(\)をつけて改行しますが、
この時、バックスラッシュの後には
何を書いてもいけません。
半角スペース文字やコメントも
書くことはできません。
ブログ内検索
最新記事
(03/31)
(03/31)
(03/30)
(03/30)
(03/30)
最古記事
(03/23)
(03/24)
(03/25)
(03/26)
(03/27)