The preprocessor directives #define, #ifdef, and #endif
The preprocessor directive #define
can be used to create compile-time flags. You have two choices: you can simply
tell the preprocessor that the flag is defined, without specifying a
value:
#define FLAG
or you can give it a value (which is the
typical C way to define a constant):
#define PI 3.14159
In either case, the label can now be
tested by the preprocessor to see if it has been defined:
#ifdef FLAG
This will yield a true result, and the
code following the #ifdef will be included in the package sent to the
compiler. This inclusion stops when the preprocessor encounters the
statement
#endif
#endif // FLAG
Any non-comment after the #endif
on the same line is illegal, even though some compilers may accept it. The
#ifdef/#endif pairs may be nested within each
other.
The complement of #define is
#undef (short for “un-define”), which will make an #ifdef
statement using the same variable yield a false result. #undef will
also cause the preprocessor to stop using a macro. The complement of
#ifdef is #ifndef, which will yield a true
if the label has not been
defined (this is the one we will use in header files).
There are other useful features in the C
preprocessor. You should check your local documentation for the full set.