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
ブログ内検索
最新記事
(03/31)
(03/31)
(03/30)
(03/30)
(03/30)
最古記事
(03/23)
(03/24)
(03/25)
(03/26)
(03/27)