Conditional compilation

In computer programming, conditional compilation is a compilation technique which results in differring executable programs depending on parameters specified.

For example, not using an actual language, the compiler may be set to define "Macintosh" and undefine "PC", and the code may contain: In C and some languages with a similar syntax, this is done using an '#ifdef' directive.

A similar procedure, using the name "conditional comment", is used by Microsoft Internet Explorer from version 5 to 9 to interpret HTML code.

[1] When conditional compilation depends on too many variables, it can make the code harder to reason about as the number of possible combinations of configuration increases exponentially.

[2][3][4] When conditional compilation is done via a preprocessor that does not guarantee syntactically correct output in the source language, such as the C preprocessor, this may lead to hard-to-debug compilation errors,[5][6][7] which is sometimes called "#ifdef hell.