One common case of nested conditionals is used to check for more than two possible alternatives. For example, you might have
#if X == 1 ... #else /* X != 1 */ #if X == 2 ... #else /* X != 2 */ ... #endif /* X != 2 */ #endif /* X != 1 */
Another conditional directive, #elif
, allows this to be
abbreviated as follows:
#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 a conditional group and subdivides it; it does not require a
matching #endif
of its own. 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 conditional group. Then
the text after each #elif
is processed only if the #elif
condition succeeds after the original #if
and all previous
#elif
directives within it have failed.
#else
is allowed after any number of #elif
directives, but
#elif
may not follow #else
.