BohYoh.comトップページへ
C & C++ FAQ
目次

C99 可変個の引数を受け取る関数形式マクロを定義することはできますか。

 C99では、可変個の引数を受け取る関数形式マクロを定義することができます。引数の宣言部には...を与え、それを__VA_ARGS__と置換するように宣言します。たとえば、

#define debug_printf(...) fprintf(stderr, __VA_ARGS__)

との定義を与えておけば、

debug_printf("n = %d x = %f\n", n , x);

は、

fprintf(stderr, "n = %d x = %f\n", n , x);

と置換されます。


■ 根拠 ■
標準C99 §6.10.3 Macro replacement

戻る

BohYoh.comロゴ