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