C ++连接宏定义

时间:2015-05-20 20:18:33

标签: c++ macros concatenation c-preprocessor

在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

1 个答案:

答案 0 :(得分:5)

是的,您可以使用##预处理程序指令和一些辅助引用宏来连接宏替换。

#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)

现在直接使用FOOCMB(_LOAD, _FLOAT)