Home The C Preprocessor www.imodulo.com · 2003-11-10
Imodulo

Elif

[ Up: Conditional Syntax ]
[ Previous: Else ]

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.