C++ __用于代码生成的VA_参数
我正在尝试做如下事情:C++ __用于代码生成的VA_参数,c++,C++,我正在尝试做如下事情: #define IID(x) if (iid == x::iid()) {return true;} #define CAST_LIST(...) \ bool isCastable(unit iid) { __VA_ARGS__ return false;} 希望使用一对宏为函数生成代码,其中每个参数提供一个if语句 VA_ARGS扩展正在插入逗号。我的问题是可以吗?我几乎从不在C++中使用逗号运算符。我称之为: CAST_LIST( \ IID(
#define IID(x) if (iid == x::iid()) {return true;}
#define CAST_LIST(...) \
bool isCastable(unit iid) { __VA_ARGS__ return false;}
希望使用一对宏为函数生成代码,其中每个参数提供一个if语句
VA_ARGS扩展正在插入逗号。我的问题是可以吗?我几乎从不在C++中使用逗号运算符。我称之为:
CAST_LIST( \
IID(ClassA), IID(ClassB))
预处理的文件如下所示:
bool isCastable(unit iid) { if (iid == ClassA::iid()) {return true;}, if (iid == ClassB::iid()) {return true;} return false;}
你能告诉我你怎么称呼它吗?退休忍者,刚刚添加了你想要的信息。你有什么理由需要这里
#define CAST_LIST(params)bool isCastable(unit iid){params return false;}
+CAST_LIST(iid(ClassA)iid(ClassB))
看起来应该可以用了。以太愤怒了,谢谢!尽管我过去常常这样做,但我没有想到这一点。这是可行的(您必须排除调用中的逗号,这很好)。我仍然很好奇,除了将参数传递给printf()之外,VA_ARGS是否还有其他用处。