2013-08-12 130 views
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。 缺少什麼?

+0

但GCC文檔說: 「如果可變參數被省略或空的,則‘##’操作者使預處理以除去在它之前的逗號「 – Patric

回答