c++ - 有没有办法在另一个#define 中执行#define?

标签 c++ c-preprocessor

我知道我想在腿上开枪;)但是,它可以让我使其余(大量)代码更小且更具可读性。

在另一个预处理器宏中创建预处理器宏有什么棘手的方法吗?

这是我正在寻找的示例。我的真实场景更复杂

// That's what I want to do and surely C++ doesn't like it.
#define MACROCREATER(B) #define MACRO##B B+B

void foo()
{
 MACROCREATOR(5) // This should create new macro (#define MACRO5 5+5)

 int a = MACRO5; // this will use new macro
}

最佳答案

C++ 标准说 (16.3.4.3):

The resulting completely macro-replaced preprocessing token sequence [... of the macro expansion...] is not processed as a preprocessing directive even if it resembles one...

所以不,没有“官方”的方式来实现你想要的宏。

关于c++ - 有没有办法在另一个#define 中执行#define?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3314032/

相关文章:

c - C 中#define 预处理器的作用域

c - #define 语法解决方案

c - 相当于 Embedded C/Code 组织中的接口(interface)

c++ - 使用静态链接启动 std::thread 会导致段错误

c++ - boost spirit qi on_error 通过引用传递 error_handler struct

c++ - Qt 5 QPrinterInfo::availablePrinters() 没有动态列出打印机

c++ - #if 预处理器指令可以嵌套在 C++ 中吗?

在 C 头文件中存储滤波器系数列表的最简洁方法

c++ - 在 C/C++ 中,将数据从矩阵复制到其他矩阵的哪种方式更快?

c++ - C++ 类模板中的友元比较和关系运算符