c++ - GCC 不将 __VA_ARGS__ 视为宏中的参数

标签 c++ compiler-errors macros

我有下一个代码,它会抛出一个错误

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 个问题:

  1. test1 不是类型
  2. “using A1”行中反斜杠后的空格(警告)
  3. 仅从 C++11 开始支持使用 作为类型别名

如果您解决了这些问题,那么它可以正常编译 (gcc 4.9.2)。

关于c++ - GCC 不将 __VA_ARGS__ 视为宏中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37020666/

相关文章:

c++ - 无法在 OS/X 中找到 C++ 标准库的位置?

c++ - for 循环中的临时函数对象

Visual Studio 2015中的C代码错误

excel - 如何对(已弃用的)Excel V4 宏进行逆向工程?

c++ - 有没有办法在 GDI+ 中实现图层?

c++ - C++中的默认赋值运算符=是浅拷贝?

swift - 插入viewWillAppear函数后,在Swift中出现编译错误

java - 错误 : missing return statement despite there being a return statement

lisp - 您将 Scheme 宏用于哪些方面?

c - 使用 __FUNCTION__ 进行字符串化不起作用