我有下一个代码,它会抛出一个错误
expected ';' before '(' token
在带有指令“using”的字符串中。
#define D1(Name, ... ) \
class Name##Postfix \
{ \
using A1 = void (*)(__VA_ARGS__); \
};
int main()
{
D1(test, test1);
}
如果我将 __VA_ARGS__
更改为 int
,则不会出现错误。如果需要,我正在使用 GCC (g++
) 编译器。
最佳答案
您的代码有 3 个问题:
test1
不是类型- “using A1”行中反斜杠后的空格(警告)
仅从 C++11 开始支持使用
作为类型别名
如果您解决了这些问题,那么它可以正常编译 (gcc 4.9.2)。
关于c++ - GCC 不将 __VA_ARGS__ 视为宏中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37020666/