【问题标题】:Mixing of two #defines into one word将两个#defines 混合成一个词
【发布时间】:2013-05-30 08:11:04
【问题描述】:

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

 #define DLG_NAME              1
 #define DLG_NAME_CONTROL_NAME 2  

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

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

【问题讨论】:

  • 按照 chris 的建议,您可以使用 ## 运算符来组合宏名称。但是,我不明白你想要实现什么。你想得到1_2 作为标识符吗? (它不是一个有效的)。
  • 没有。我希望预处理器会翻译int i = DLG_NAME_CONTROL_NAME
  • 我再解释一下:我想创建一些从公共控件类派生的类,我会写#define DLG_NAME_FIRST_COMBO 2#define CONTROL_NAME FIRST_COMBO,在类的函数中我会写@987654331 @。每个类都将按照其中定义的方式操作它。我说的对吗?

标签: c++ c-preprocessor


【解决方案1】:

我猜,你要找的是:

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

int i = CONTROL_NAME(FIRST_COMBO);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多