Gcc/10.2.0/cpp/Elif
Next: __has_attribute
, Previous: Else, Up: Conditional Syntax [Contents][Index]
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
’.