C言語のマクロについてです。C言語のマクロには落とし穴が多いので、マクロをマスターして引っかからないようにしましょう。そしてC言語の達人になってください。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
C言語のマクロはテキスト置換ですので、
気をつけていないと、
思わぬ不具合に見舞われます。
一番簡単な例を見てみましょう。
#define VOLUME 90 + 10
プログラム中で次の計算をしたとします。
y = x * VOLUME;
プログラムを書いた人は、
x * 100
を計算したかったと思われます。
しかし、実際には下記のように展開されます。
y = x * 90 + 10
これは、プログラムを書いた人の意図と
違うと思われます。
この問題は下記のようにすれば回避できます。
#define VOLUME (90 + 10)
この場合、
y = x * (90 + 10)
と展開されますので、
意図したとおりの計算結果となります。
C言語のマクロの置換字句は、
全体を括弧で括ったほうがよいでしょう。
PR
ブログ内検索
最新記事
(03/31)
(03/31)
(03/30)
(03/30)
(03/30)
最古記事
(03/23)
(03/24)
(03/25)
(03/26)
(03/27)