忍者ブログ
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)

バックスラッシュは、環境によっては
円記号(¥)と表示される場合もあります。
マクロが複数行になる時は、
行の終わりにバックスラッシュ(\)をつけて改行しますが、
この時、バックスラッシュの後には
何を書いてもいけません。

半角スペース文字やコメントも
書くことはできません。
ブログ内検索
バーコード
アーカイブ

Copyright © [ C言語のマクロ ] All rights reserved.
Special Template : 忍者ブログ de テンプレート
Special Thanks : 忍者ブログ
Commercial message : [PR]