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