2

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

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

MAKE_TEMPLATE()
struct Testing{};

编译器给出:错误:“>”标记之前的预期标识符

但是g++ -E main.cpp(获取宏扩展)显示:

template <typename T >
struct Testing{};

与:

MAKE_TEMPLATE(typename U)
struct Testing{};

它编译确定。少了什么东西?

4

1 回答 1

3

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

于 2013-08-12T07:58:32.273 回答