Preprocessor
From cppreference.com
                    
                                        
                    < cpp
                    
                                                            
                    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.
| Contents | 
[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,pragma) [1]
- 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,#elifand#endif).
-   replace text macros while possibly concatenating or quoting identifiers (controlled by directives #defineand#undef, and operators#and##)
-  include other files (controlled by directive #include)
-  cause an error (controlled by directive #error)
The following aspects of the preprocessor can be controlled:
-   implementation defined behavior (controlled by directives #pragma)
-   file name and line information available to the preprocessor (controlled by directives #line)
[edit] Footnotes
- ↑ These are the directives defined by the standard. The standard does not define behavior for other directives: they might be ignored, have some useful meaning, or  cause a compile-time error. Even if otherwise ignored, they are removed from the source code when the preprocessor is done. A common non-standard extension is the directive #warningwhich emits a user-defined message during compilation.
[edit] See also
| C documentation for preprocessor | 


