忍者ブログ
C言語のマクロについてです。C言語のマクロには落とし穴が多いので、マクロをマスターして引っかからないようにしましょう。そしてC言語の達人になってください。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

C言語の関数形式マクロの引数に、
渡さない方がよいものは、
インクリメント、デクリメントを
含む式だけではありません。

他にも、代入(+=, -=等)、入出力(getc()等)、
副作用を持つ関数の呼び出し等があります。

入出力の例を見てみましょう。

c = MAX(getc(f), c);

⇒ c = ((getc(f)) > (c) ? (getc(f)) : (c))

入力が2回行われるケースがありますね。
PR
マクロが複数行になる時は、
行の終わりにバックスラッシュ(\)をつけて改行しますが、
この時、バックスラッシュの後には
何を書いてもいけません。

半角スペース文字やコメントも
書くことはできません。
あまりないとは思いますが、
次のような記述だとヘッダをインクルードできません。

#define EMPTY
EMPTY #include "my_header.h"
ブログ内検索
バーコード
アーカイブ

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