0
我試圖構建一個簡單的C++宏觀和我甚至不能上手。 Google目前還沒有幫助。一個簡單的C++ 11的宏
#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. ^
https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html – macroland
我經歷過的可變參數的宏文件。不同之處在於,我想要允許沒有值,而不是需要初始「格式」字段。 –
如果你的目標是建立一個簡單的宏,那麼不要嘗試創建一個可變參數宏,這是因爲它們比非可變參數不太簡單。 – user2079303