带有前导逗号的嵌套可变参数宏

时间:2017-07-16 18:14:54

标签: c++ macros comma variadic-macros

我有一个可变的宏,它运行得很好:

#define COMPONENT_CLASS(name, inheritance...) \
                class name : public Component, ##inheritance {

由于没有进一步的相关原因,我试图首先避免使用这种变量。我的方法看起来像这样

#define COMPONENT_CLASS_Inherits(...) , ##__VA_ARGS__
#define COMPONENT_CLASS(name, inheritance) \
            class name : public Component inheritance {

我想这样使用:

COMPONENT_CLASS(Test, COMPONENT_CLASS_Inherits(SomeInterface))
};

这有效,当有一些接口但失败时,COMPONENT_CLASS_Inherits没有参数,因为前导逗号不会被删除!这有什么问题?

0 个答案:

没有答案