【发布时间】:2013-08-12 07:52:10
【问题描述】:
按照 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{};
编译OK。 缺少什么?
【问题讨论】:
-
但是 gcc 文档说:“如果变量参数被省略或为空,'##' 运算符会导致预处理器删除它前面的逗号”