【问题标题】:c++ Variadic Macro Compile errorc++ 可变参数宏编译错误
【发布时间】: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 文档说:“如果变量参数被省略或为空,'##' 运算符会导致预处理器删除它前面的逗号”

标签: c++ c macros variadic


【解决方案1】:

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

【讨论】:

  • 嗯,还有其他选择吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
相关资源
最近更新 更多