4.2.5 Elif
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 '.