将两个#defines混合成一个单词

时间:2013-05-30 08:11:05

标签: c++ c-preprocessor

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

 #define DLG_NAME              1
 #define DLG_NAME_CONTROL_NAME 2  

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

那么如何将第一个#define和另一个文字混合以获得第二个#define值?

1 个答案:

答案 0 :(得分:3)

我想,你在寻找的是:

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

int i = CONTROL_NAME(FIRST_COMBO);

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