在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
答案 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)
现在直接使用FOO
或CMB(_LOAD, _FLOAT)
。