|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|
These are all preprocessor directives aimed at selecting certain parts of code and removing other depending on the state of a preprocessor variable.
#if statement looks very much like a normal if statement,
just written a bit differently.
Assume you may have the following define somewhere:
#define CODE_VAR 2 or #define CODE_VAR 3
Then you can write
#if CODE_VAR == 2 <code that will be kept only if CODE_VAR == 2> #else <code that will be kept only if CODE_VAR != 2> #endif
You don't have to have the
#else statement there at all if you
don't want to.
It's sufficient to have the following statement to 'define' a preprocessor pattern as existing:
#define CODE_VAR /* This defines the existence of CODE_VAR */
Then you can write like this:
#ifdef CODE_VAR <code that will be kept only if CODE_VAR is defined> #else <code that will be kept only if CODE_VAR isn't defined> #endif
#ifndef CODE_VAR <code that will be kept only if CODE_VAR isn't defined> #else <code that will be kept only if CODE_VAR is defined> #endif
#else part is optional.
#if/#ifdef/#ifndef preprocessor commands are almost only used
to add debug code that you don't want to have activated all of the time,
or code that will work differently depending on other very rarely
changing parameters. Since the conditions have to be hard-coded in the
file and can't change during the course of the use of the object this is
something you very rarely do.