我正在尝试构建一个简单的c++宏,但我甚至无法开始。到目前为止,谷歌并没有提供任何帮助。
#define blow (...) __VA_ARGS__
int main () {
blow();
}生成以下错误:
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. ^发布于 2016-12-03 20:46:12
宏定义应该在宏名称和(之间不能有空格
#define blow(...) __VA_ARGS__
int main () {
blow();
}使用空格,您可以定义常规的非变量宏blow,它将扩展为(...) __VA_ARGS__,这将导致您的错误消息。
https://stackoverflow.com/questions/40925231
复制相似问题