c++ - 将两个#define 混合成一个词

标签 c++ c-preprocessor

我的对话框中控件的约定是:

 #define DLG_NAME              1
 #define DLG_NAME_CONTROL_NAME 2  

我想构建一个知道控件名称的函数,并且必须获取定义的值。
很明显,我不能写 int i = DLG_NAME + _ + CONTROL_NAME

那么我如何混合第一个 #define 和另一个文本来获得第二个 #define 值?

最佳答案

我想,您正在寻找的是:

#define DLG_NAME_FIRST_COMBO 2    
#define CONTROL_NAME(x) DLG_NAME_##x

int i = CONTROL_NAME(FIRST_COMBO);

您在评论中建议的方式不起作用,因为宏表达式不会在定义之外重新求值。

关于c++ - 将两个#define 混合成一个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831034/

相关文章:

c++ - 来自 std::basic_string 的私有(private)继承

c++ - GetCurrentConsoleFont 未在范围内声明,我做错了什么?

c++ - 仅 header 库设计 - 包含指令

使用 clang 编译程序时,可以在 gdb 中扩展 C 宏吗?

macros - 比较 C 宏中的字符串(用于 MODULE_LICENSE)

C++:迭代器适配器将迭代器限制在一系列迭代器中?

c++ - 这不是垂头丧气吗?

c++ - 定义带有添加前缀的新宏的宏

c# - #define 宏的 C 到 C# 转换

c - 在 C 程序中使用#define