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, endif, line, error, 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 and #endif). #define and #undef, and operators # and ##) #include) #error) 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.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/preprocessor