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

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

一般的にマクロの最後にはセミコロンをつけません。

というもの、以下のようなコードの場合、
問題が起こるからです。

#define INCREMENT(x, max) ((x) = ((x) + 1) % (max));

v = INCREMENT(i, 5) + 100;

INCREMENT()は、xをカウントアップします。
そして、もしmaxに達したらxを0にします。

展開結果は次のようになります。

v = ((i) = ((i) + 1) % (5)); + 100;

マクロの最後にセミコロンがついているので、
文が2つに別れてしまいます。

しかも、コンパイルエラーとはなりません。
不具合の原因もつかみにくいです。
PR
ブログ内検索
バーコード
アーカイブ

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