5

#define可変長のパラメータを持つマクロへの方法はありますか?

#define CALL(ar1, ar2, ar3)
do something
#endif

Cコードで

CALL(0);
CALL(0,1);
CALL(0,1,2)

すべて上記の CALL マクロを呼び出します。ar2、ar3 を使用しない場合、プリプロセッサは単に ar2 または ar3 のある行を無視します。

4

1 に答える 1

6

はい、これを見てください: http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html

キーワードは__VA_ARGS__( Variadic Macros ):

マクロは、関数と同じように可変数の引数を受け入れるように宣言できます。マクロを定義するための構文は、関数の構文と似ています。次に例を示します。

 #define eprintf(...) fprintf (stderr, __VA_ARGS__)
于 2013-02-07T19:58:56.180 に答える