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