#### 26.6.2.5 The `#elif` directive ¶

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`.