C 言語 マクロ講座 再帰展開実験編2007年03月23日 11時52分35秒

マクロで可変個数引数を渡すことができると、試してみたくなるのが、再帰的な利用法だ。

マクロを利用して、構造体の配列を初期化すると、同じマクロを続けて呼ぶことになる。


Log(debug),
Log(info),
...

もし、マクロが再帰的に処理されれば、目的の項目を可変個数引数として渡すだけですむからだ。

Log(debug, info, ...);

の様にやりたい。

そこで、実験してみる。


% cat nested.c 
#define EXPAND(x, ...) x; EXPAND(__VA_ARGS__)

EXPAND(1, 2, 3)


% gcc -E nested.c
# 1 "nested.c"
# 1 ""
# 1 ""
# 1 "nested.c"


1; EXPAND(2, 3)

残念ながら、展開された同一のマクロを更に再帰的に展開することはできないようだ。

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2007/03/23/1338386/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。