1
繼計算器問題:「複雜的宏零個參數和逗號」,我想:C++可變參數宏編譯錯誤
#define MAKE_TEMPLATE(...) template <typename T, ## __VA_ARGS__ >
MAKE_TEMPLATE()
struct Testing{};
編譯器會發出:錯誤:預期標識符之前「>」令牌
但是克++ -E main.cpp中(以獲得宏展開)顯示:
template <typename T >
struct Testing{};
甲nd用:
MAKE_TEMPLATE(typename U)
struct Testing{};
它編譯OK。 缺少什麼?
但GCC文檔說: 「如果可變參數被省略或空的,則‘##’操作者使預處理以除去在它之前的逗號「 – Patric