Conditional compilation is provided by the following directives: #if constant-expression Checks whether the constant expression is nonzero (true). #ifdef identifier Checks whether the identifier is defined. #ifndef identifier Checks whether the identifier is undefined. #else Introduces source lines to be compiled as an alternative to the conditions tested by the previous directives. #elif constant-expression Delimits alternative source lines to be compiled if the constant expression in the corresponding #if, #ifdef, or #ifndef directive is false and if the additional constant expression presented in the #elif directive is true. An #elif directive is optional. #endif Ends the scope of the previous directives. If the condition checked by #if, #ifdef, or #ifndef is true, then all lines between the #else, #elif, and #endif are ignored. If the condition is false, then any lines between the conditional directive and the #else or #elif (if any) are ignored. If there is no #else, then the lines between the conditional and the #endif are ignored.