The Wayback Machine - https://web.archive.org/web/20120509051147/http://en.cppreference.com:80/w/cpp/preprocessor

Preprocessor

From cppreference.com
< cpp
Jump to: navigation, search

The preprocessor runs before the compilation begins. The result of preprocessing is single file which is then passed to the actual compiler.

[edit] Directives

The preprocessing directives control the behavior of the preprocessor. Each directive occupies one line and has the following format:

  • # character
  • preprocessing instruction (one of define, undef, include, if, ifdef, ifndef, else, elif, endif, line, error, warning, pragma)
  • arguments (depends on the instruction)
  • line break

The null directive (# followed by a line break) is allowed and has no effect.

[edit] Capabilities

The preprocessor has the source file translation capabilities:

  • conditionally compile of parts of source file (controlled by directive #if, #ifdef, #ifndef, #else, #elif and #endif).
  • replace text macros while possibly concatenating or quoting identifiers (controlled by directives #define and #undef, and operators # and ##)
  • include other files (controlled by directive #include)
  • cause a warning (controlled by directive #warning)
  • cause an error (controlled by directive #error)

The following aspects of the preprocessor can be controlled:

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
In other languages