The preprocessor is executed at translation phase 4, before the compilation. The result of preprocessing is a single file which is then passed to the actual compiler.
The preprocessing directives control the behavior of the preprocessor. Each directive occupies one line and has the following format:
# character define, undef, include, if, ifdef, ifndef, else, elif, elifdef, elifndef(since C23), endif, line, embed(since C23), error, warning(since C23), pragma) [1] The null directive (# followed by a line break) is allowed and has no effect.
The preprocessor has the source file translation capabilities:
#if, #ifdef, #ifndef, #else, #elif, #elifdef, #elifndef(since C23) and #endif). #define and #undef, and operators # and ##) #include and checked with __has_include(since C23)) #error or #warning respectively(since C23)) The following aspects of the preprocessor can be controlled:
#pragma and operator _Pragma(since C99)) #line) #warning which emits a user-defined message during compilation.(until C23) | C documentation for Predefined Macro Symbols | |
| C documentation for Macro Symbol Index | |
| C++ documentation for Preprocessor |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/preprocessor