#if, along with the #else, #elif, #endif, #define, and #undef directives, lets you include or exclude code based on the existence of one or more symbols. This can be useful when compiling code for a debug build or when compiling for a specific configuration.
A conditional directive beginning with a #if directive must explicitly be terminated with a #endif directive.
#define lets you define a symbol, such that, by using the symbol as the expression passed to the #if directive, the expression will evaluate to true.
You can also define a symbol with the /define compiler option. You can undefine a symbol with #undef.
A symbol that you define with /define or with #define does not conflict with a variable of the same name. That is, a variable name should not be passed to a preprocessor directive and a symbol can only be evaluated by a preprocessor directive.
The scope of a symbol created with #define is the file in which it was defined.