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.