2008/12/14

C言語: マクロ展開マクロ

Xenのコードを眺めていたらマクロを展開するためのマクロを見つけたのでメモメモ.
下記のようなマクロが定義されているものとする.

#define EXPAND_MACRO(_MACRO) \
 _MACRO(a) \
 _MACRO(b) \

#define DEFINE(_X) int _X;
#define FUNC(_X) do { func(_X); } while (0);

このとき,
EXPAND_MACRO(DEFINE);
は下記のように展開される.
int a;
int b;

同様に
EXPAND_MACRO(FUNC);
は下記のように展開される.
func(a);
func(b);

便利そうな気もするけど多用すると混乱しそう.

0 件のコメント: