私はこのようなことをしたいと思います:
#define NUM_ARGS() 2
#define MYMACRO0(...) "no args"
#define MYMACRO1(...) "one arg"
#define MYMACRO2(...) "two args"
#define MYMACRO(num,...) MYMACRO##num(__VA_ARGS__)
#define GENERATE(...) MYMACRO(NUM_ARGS(),__VA_ARGS__)
そして、「2つの引数」に評価されると予想していました。しかし、代わりに私は持っています
MYMACRONUM_ARGS()(1,1)
(Visual C++ を使用して) 私がやりたいことを行う方法はありますか?
PS最終的には、すべての変数をダンプするロガーを実装したいと考えています。次のコード
int myInt = 7;
string myStr("Hello Galaxy!");
DUMP_VARS(myInt, myStr);
ログレコードを生成します"myInt = 7; myStr = Hello Galaxy!"