c ++ Variadic宏编译错误

时间:2013-08-12 07:52:11

标签: c++ c macros variadic

在stackoverflow问题:“带有零参数和逗号的变体宏”之后,我尝试了:

#define MAKE_TEMPLATE(...) template <typename T, ## __VA_ARGS__ >

MAKE_TEMPLATE()
struct Testing{};

编译器给出:错误:'&gt;'之前的预期标识符令牌

g ++ -E main.cpp (以获得宏扩展)显示:

template <typename T >
struct Testing{};

并且:

MAKE_TEMPLATE(typename U)
struct Testing{};

编译好。 什么不见​​了?

1 个答案:

答案 0 :(得分:3)

http://en.wikipedia.org/wiki/Variadic_macro: GCC支持以下(非便携式)扩展:## __VA_ARGS__