首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个简单的c++11宏

一个简单的c++11宏
EN

Stack Overflow用户
提问于 2016-12-02 13:12:19
回答 1查看 322关注 0票数 0

我正在尝试构建一个简单的c++宏,但我甚至无法开始。到目前为止,谷歌并没有提供任何帮助。

代码语言:javascript
复制
#define blow (...) __VA_ARGS__
int main () {
    blow();
    }

生成以下错误:

代码语言:javascript
复制
g++ -fpermissive -std=gnu++11 -g3 -I/eclipse/workspace/shared /eclipse/workspace/shared/amanda.c++ -o /binaries/amanda
[g++ shared/amanda took 0.0 seconds]
 1. /eclipse/workspace/shared/amanda.c++:7:20: warning: __VA_ARGS__ can only appear in the expansion of a C99 variadic macro [enabled by default]
 2.  #define blow (...) __VA_ARGS__
 3.                     ^
 4. /eclipse/workspace/shared/amanda.c++: In function ‘int main()’:
 5. /eclipse/workspace/shared/amanda.c++:7:15: error: expected primary-expression before ‘...’ token
 6.  #define blow (...) __VA_ARGS__
 7.                ^
 8. /eclipse/workspace/shared/amanda.c++:9:2: note: in expansion of macro ‘blow’
 9.   blow();
10.   ^
11. /eclipse/workspace/shared/amanda.c++:7:15: error: expected ‘)’ before ‘...’ token
12.  #define blow (...) __VA_ARGS__
13.                ^
14. /eclipse/workspace/shared/amanda.c++:9:2: note: in expansion of macro ‘blow’
15.   blow();
16.   ^
EN

回答 1

Stack Overflow用户

发布于 2016-12-03 20:46:12

宏定义应该在宏名称和(之间不能有空格

代码语言:javascript
复制
#define blow(...) __VA_ARGS__
int main () {
    blow();
}

使用空格,您可以定义常规的非变量宏blow,它将扩展为(...) __VA_ARGS__,这将导致您的错误消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40925231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档