#define指令有多个替换?

时间:2012-04-05 14:36:40

标签: c++ macros c-preprocessor wxwidgets preprocessor-directive

我对编程比较陌生,我正在尝试学习在C ++中使用wxWidgets(使用Visual Studio 2010)。

我正在查看wxWidgets头文件“app.h”,我看到一些我无法理解的#define指令。这是一个例子:

#define wxIMPLEMENT_APP(appname)            \
   wxIMPLEMENT_WX_THEME_SUPPORT            \
   wxIMPLEMENT_APP_NO_THEMES(appname)"

我习惯看到#define有一个“标识符”和一个“替换”,所以我无法理解这个宏是否有两个“标识符”(wxIMPLEMENT_APP(appname)wxIMPLEMENT_WX_THEME_SUPPORT)和一个“替换”(wxIMPLEMENT_APP_NO_THEMES (appname)),或一个“标识符”(wxIMPLEMENT_APP(appname))和两个“替换”(wxIMPLEMENT_WX_THEME_SUPPORTwxIMPLEMENT_APP_NO_THEMES(appname))。

我如何理解这个宏?

我尝试在网上和教科书中搜索,在“宏”,“预处理器指令”,“文本替换宏”,“#define指令”等搜索,但我找不到任何解释的例子看起来就像我在这里的那个。

1 个答案:

答案 0 :(得分:3)

预处理器宏具有跨多行的单个替换拆分。该行末尾的\允许您在多行文本上写一条“逻辑”行。

wxIMPLEMENT_APP(appname)模式匹配时,wxIMPLEMENT_APP(appname)后面的所有内容都会放在程序的文本中;据推测,这两个定义都将由预处理器进一步处理,因为它们看起来像是对其他宏定义的引用。