【问题标题】:C++ concatenating macro definitionsC++ 连接宏定义
【发布时间】:2015-08-02 06:52:27
【问题描述】:

在 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_FLOAT ##_LOAD##_FLOAT
  • ## 应该可以很好地为您服务。
  • 指南说不要使用宏.. 只是说

标签: c++ macros concatenation c-preprocessor


【解决方案1】:

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

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

【讨论】:

  • 谢谢。很好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 2017-08-18
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 2011-07-12
相关资源
最近更新 更多