C++ 带自定义分离器的增压器
Boost的预处理器库有一个整洁的宏C++ 带自定义分离器的增压器,c++,boost-preprocessor,C++,Boost Preprocessor,Boost的预处理器库有一个整洁的宏Boost\u PP\u SEQ\u CAT,以便: #define MY_SEQUENCE (a)(b)(c) BOOST_PP_SEQ_CAT(MY_SEQUENCE) 变成: abc switch(x) { case 1: case 5: case 7: return true; } 在我对这个问题的回答()中,我给出了一个包含许多case子语句的switch语句作为解决方案,但遗憾的是无法通过预处理器宏或变量模板定义这样一
Boost\u PP\u SEQ\u CAT
,以便:
#define MY_SEQUENCE (a)(b)(c)
BOOST_PP_SEQ_CAT(MY_SEQUENCE)
变成:
abc
switch(x) {
case 1: case 5: case 7:
return true;
}
在我对这个问题的回答()中,我给出了一个包含许多case
子语句的switch
语句作为解决方案,但遗憾的是无法通过预处理器宏或变量模板定义这样一个switch
块
我做了更多的研究,发现BOOST\u PP\u SEQ\u CAT
(定义如下:)最终在这里执行串联:
#define BOOST_PP_SEQ_CAT_O_I(a, b) a ## b
是否可以通过修改此宏来允许宏化的开关
语句
#define BOOST_PP_SEQ_CAT_O_I(ARG_A, ARG_B) case: # ARG_A ## ARG_B
e、 g
变成:
abc
switch(x) {
case 1: case 5: case 7:
return true;
}
问题是,我不能重新定义BOOST\u PP\u SEQ\u CAT,因为它是在BOOST自己的文件中定义的,修改它们似乎不是正确的解决方案。有没有一种方法可以定义我自己的BOOST\u PP_SEQ\u CAT
,使用大小写:
输出,而不用BOOST重新定义