Conditionals and Macros Conditionals are useful in connection with macros or assertions, because those are the only ways that an expression's value can vary from one compilation to another. Conditionals that test whether just one name is defined are very common, so there are two special short conditional directives for this case.
Macro definitions can vary between compilations for several reasons.
Some macros are predefined on each kind of machine. On other machines, it would not be defined. Many more macros are defined by system header files. Different systems and machines define different macros, or give them different values. It is useful to test these macros with conditionals to avoid using a system feature on a machine where it is not implemented.