__VA_ARGS__用于代码生成

时间:2014-05-04 23:27:35

标签: 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(ClassA), IID(ClassB))

预处理文件如下所示:

bool isCastable(unit iid) { if (iid == ClassA::iid()) {return true;}, if (iid == ClassB::iid()) {return true;} return false;}

0 个答案:

没有答案