【问题标题】:BOOST_PP_VARIADIC_SIZE is not expandingBOOST_PP_VARIADIC_SIZE 没有扩大
【发布时间】:2012-06-06 04:41:24
【问题描述】:

我正在测试 BOOST_PP_VARIADIC_SIZE,如下所示:

#include <boost/preprocessor.hpp>
#define PORT_HOST A,B
#define PORT_ADDR 1,2,3,4
#define VAR_DATA x, y, z
BOOST_PP_VARIADIC_SIZE(VAR_DATA)

这是我扩展后得到的:

BOOST_PP_VARIADIC_SIZE(x, y, z)

但如果我这样做:

#define SEQ (B)(O)(O)(S)(T)
BOOST_PP_SEQ_ENUM(SEQ) // expands to B, O, O, S, T

展开后得到:

B, O, O, S, T

我在 Mac OS 上使用了几乎最新的 clang。 g++ 也产生相同的结果。

我想知道这里发生了什么。为什么可变参数增强预处理器不能正确扩展。我正在使用 boost 1.49.0

【问题讨论】:

  • +1 用于异常完美标记的问题。 :-]

标签: c++ boost boost-preprocessor


【解决方案1】:

找到了答案。在 Boost 1.49 中,在头文件 BOOST/Preprorccessor/config.hpp 中,clang 没有被定义为支持 Variadic marcos。原因是“未测试”.... :(

启用 clang 后,variadic marco 会按预期展开。

【讨论】:

  • 在使用github.com/ishani/ClangVSx 在 Clang 中玩一些 MSVC 代码时,在 1.53 中遇到了这个问题。幸运的是,您的问题是通过 Google 输入搜索“clang boost preprocessor”时的第一个结果:o)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多