2

I am relatively new to programming, and I am trying to learn to use wxWidgets in C++ (with Visual Studio 2010).

I was looking through the wxWidgets header file "app.h" and I see some #define directives that I can't understand. Here is an example:

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

I'm used to seeing #define with one "identifier" and one "replacement", so I can't understand if this macro has two "identifiers" (wxIMPLEMENT_APP(appname) and wxIMPLEMENT_WX_THEME_SUPPORT) and one "replacement" (wxIMPLEMENT_APP_NO_THEMES (appname)), or one "identifier" (wxIMPLEMENT_APP(appname)) and two "replacements" (wxIMPLEMENT_WX_THEME_SUPPORT and wxIMPLEMENT_APP_NO_THEMES(appname)).

How am I to understand this macro?

I tried looking online and in text books, searching under "macros", "pre-processor directives", "text replacement macros", "#define directive", and similar, but I could not find any examples with explanation that look like the one I have here.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129

1 Answers1

3

This preprocessor macro has a single replacement split across multiple lines. The \ at the end of the line lets you write a single "logical" line on multiple lines of text.

Everything that follows wxIMPLEMENT_APP(appname) will be placed in the text of the program when wxIMPLEMENT_APP(appname) pattern is matched; presumably, both these definitions will be further processed by the preprocessor, because they look like references to other macro definitions.

Sergey Kalinichenko
  • 714,442
  • 84
  • 1,110
  • 1,523