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

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

##演算子はマクロ内の文字を
連結するために使用されます。

#define TEST 1 ## 0

このマクロは使用時に、
1と0が連結され、##がなくなり、
10に展開されます。

通常は引数の直前または直後に、
##を配置して使用します。

その場合、対応する実引数を文字列にして、
それから、##の直前にある字句と直後の字句を連結します。

#define TEST_PRINT(a) (printf("%d, %d\n", a ## 1, a ## 2))

int x1 = 10;
int x2 = 20;

TEST_PRINT(x);

上記は、

(printf("%d, %d\n", x1, x2));

に展開され、実行すると

10, 20

と表示されます。

##演算子による連結後、
その結果が不正な場合の動作は未定義です。

##演算子は置き換えられる字句の
先頭または終わりにあってはいけません。

また、#演算子および##演算子の
評価順序は未規定です。
PR
ブログ内検索
バーコード
アーカイブ

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