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)