BOOST_PP_SEQ_ENUM在空序列上
BOOST_PP_SEQ_ENUM on an empty sequence
我怎么能写一个宏像BOOST_PP_SEQ_ENUM
,但处理空序列,即
#define SEQ (a)(b)
MY_BOOST_PP_SEQ_ENUM(SEQ) // expands to a,b
#define SEQ
MY_BOOST_PP_SEQ_ENUM(SEQ) // expands to nothing
这里提出了一个解决方案,名为add #define BOOST_PP_SEQ_ENUM_0
。它被拒绝了评论"没有这样的事情作为一个空序列",但这似乎解决了我的问题。
您只需要将SEQ
定义为空序列:
#define SEQ ()
,可以直接使用BOOST_PP_SEQ_ENUM
你可以这样做:
#define PP_SEQ_ENUM(x) BOOST_PP_CAT(PP_SEQ_ENUM_0 x, _END)
#define PP_SEQ_ENUM_0(x) x PP_SEQ_ENUM_1
#define PP_SEQ_ENUM_1(x) , x PP_SEQ_ENUM_2
#define PP_SEQ_ENUM_2(x) , x PP_SEQ_ENUM_1
#define PP_SEQ_ENUM_0_END
#define PP_SEQ_ENUM_1_END
#define PP_SEQ_ENUM_2_END
这应该适用于任何大小的序列(甚至大于256)
相关文章:
- enum是C++中的宏变量还是整数变量
- 是否可以从int转换为enum类类型
- 在一个模板函数中,若输入的类型是enum类,我该如何使用std::underlying_type
- 在C++中,将int值赋给enum,反之亦然
- 两个 COM 组件中 ENUM 的重复条目
- 类继承,ENUM 与 AST 类实现的问题
- C++关于ENUM的问题。我得到的响应比枚举列表大
- 在C++中,如果"int a = 3; int* p = &a;",那么为什么不允许"const int* &pp = p",但允许"const int* const &pp = p"?
- sizeof(enum) 可以不同于 sizeof(std::underlying_type<Enum>::
- 如何理解c++中在命名空间内部定义的枚举类型enum
- *++*++ppp,*++pp[1],*++(*(1+ppp)有什么具体的区别吗?(C/C++指针问题)
- 如何将set和enum一起使用
- 如何限制从int到enum类的转换
- 编译为 cuda 内核调用提供了"expression must have integral or unscoped enum type"
- Access C++ Enum from Swift
- 密钥错误: "Couldn't find enum caffe.EmitConstraint.EmitType"
- 叮当警告"-Wsigned-enum-bitfield"的含义
- 使用 enum 参数将 C++ 对象信号连接到 QML 信号处理程序
- 在类中使用"enum"时出错
- 代码 P 的问题:PP 演练 4