#if X == 1
. . .
#else /* X != 1 */ #if X == 2
. . .
#else /* X != 2 */
. . .
#endif /* X != 2 */ #endif /* X != 1 */Another conditional directive, #elif, allows the previous input to be abbreviated, as the following example shows.
#if X == 1
. . .
#elif X == 2
. . .
#else /* X != 2 and X != 1*/
. . .
#endif /* X != 2 and X != 1*/#elif stands for else if. Like #else, it goes in the middle of #ifand #endif pairs, subdividing the pair; #elif does not require a matching #endif. Like #if, the #elif directive includes an expression to be tested.
The
text following the #elif
is processed only if the original #if
condition failed and the #elif
condition succeeds. More than one #elif
can go in the same #if
and #endif
group. Then the text after each #elif
is processed only if the #elif
condition succeeds after the original #if
and any previous #elif
directives within it have failed. #else
is equivalent to #elif1,
and #else
is allowed after any number of #elif
directives, but #elif
may not follow #else.