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
) #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 Preprocessor |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/preprocessor