Datasheet

If all occurrences of constant-expression are false, or if no #elif directives appear,
the preprocessor selects the text block after the #else clause. If the #else clause is
omitted and all instances of constant_expression in the #if block are false, no
section is selected for further processing.
Any processed section can contain further conditional clauses, nested to any depth.
Each nested
#else, #elif, or #endif directive belongs to the closest preceding the
#if directive.
The net result of the preceding scenario is that only one code
section (possibly
empty) will be compiled.
Directives #ifdef and #ifndef
The #ifdef and #ifndef directives can be used anywhere #if can be used and
they can test whether an identifier is currently defined or not. The line
#ifdef identifier
has exactly the same effect as #if 1 if identifier is currently defined, and the
same effect as #if 0 if identifier is currently undefined. The other directive,
#ifndef, tests true for the “not-defined” condition, producing the opposite results.
The syntax thereafter follows that of #if, #elif, #else, and #endif.
An identifier defined as NULL is considered to be defined.
226
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Language Reference
mikroC PRO for AVR
CHAPTER 5