Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ __用于代码生成的VA_参数_C++ - Fatal编程技术网

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是否还有其他用处。