Next: <code>__has_attribute</code>, Previous: Else, Up: Conditional Syntax

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