C++ 连接宏定义

标签 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

最佳答案

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

#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++ 连接宏定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359596/

相关文章:

c++ - 可变参数宏 : how to solve "too many actual parameters for macro.."

macros - 如何在 lisp 中编写 'destructive' dolist 宏

python - 合并 2 个变量时, concat 不会按照我想要的方式打印它们

javascript - 连接未知数量的参数数组。抛出重复

c++ - TinyXML2 解析 C++ 中同一元素内的数据

c++ - 如何解决指针别名问题?

c++ - gdb 检测到段错误。如何查明确切来源?

c++ - 重载 >> 使用 istream

objective-c - 使用 C 宏创建映射到 Objective-C 消息调用的 C 风格代码?

java - 如何有效地连接对象列表中的多个 String 变量?