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

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

関数マクロにも、注意すべき点があります。

次の例を見てみましょう。

#define CIRCUMFERENCE(r) (2 * r * 3.14)

円周を求めるマクロですが、

c = CIRCUMFERENCE(10 + 5);

という使われ方をすると、
下記のように展開され、
円周が計算されません。

c = (2 * 10 + 5 * 3.14);

本来なら、次のように
展開されて欲しかったはずです。

c = (2 * (10 + 5) * 3.14);

C言語の関数マクロの引数は、下記のように
括弧で括ったほうがよいでしょう。

#define CIRCUMFERENCE(r) (2 * (r) * 3.14)
PR
ブログ内検索
バーコード
アーカイブ

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