C++ 连接宏定义
C++ concatenating macro definitions
在 C++(具体来说是 G++)中,可以连接两个宏定义,不带空格,以创建第三个定义吗?比如我怎么取
#define _LOAD _mm256_load
#define _FLOAT ps
然后对它们进行操作
#define _LOAD_FLOAT ****do something with _FLOAT and _LOAD here *****
创建一个功能上等同于以下内容的定义:
#define _LOAD_FLOAT _mm256_load_ps
是的,您可以使用 ##
预处理器指令和一些辅助引用宏连接宏替换。
#define _LOAD _mm256_load
#define _FLOAT ps
#define CAT(X, Y, Z) X ## Y ## Z
#define CMB(A, B) CAT(A, _, B)
#define FOO CMB(_LOAD, _FLOAT)
现在使用 FOO
,或者直接 CMB(_LOAD, _FLOAT)
。
在 C++(具体来说是 G++)中,可以连接两个宏定义,不带空格,以创建第三个定义吗?比如我怎么取
#define _LOAD _mm256_load
#define _FLOAT ps
然后对它们进行操作
#define _LOAD_FLOAT ****do something with _FLOAT and _LOAD here *****
创建一个功能上等同于以下内容的定义:
#define _LOAD_FLOAT _mm256_load_ps
是的,您可以使用 ##
预处理器指令和一些辅助引用宏连接宏替换。
#define _LOAD _mm256_load
#define _FLOAT ps
#define CAT(X, Y, Z) X ## Y ## Z
#define CMB(A, B) CAT(A, _, B)
#define FOO CMB(_LOAD, _FLOAT)
现在使用 FOO
,或者直接 CMB(_LOAD, _FLOAT)
。