|
| Conditional CompilationConditional compilation directives allow you to designate parts of the program for the compiler to ignore. These parts are not compiled and no object code is generated for them. Conditional directives resemble the C if statement and may be used to test defined macros or arithmetic expressions. The test performed by a conditional directive is done at compile-time by the compiler. Depending on the result of the test, source code is either included or excluded from the compilation. There are several reasons to use conditional compilation in your program. - Your program may require different code depending on which device or architecture you use. In some cases, library routines may exist in one configuration that do not exist in another. Conditional compilation allows you to handle such a situation by substituting alternate functions with the unavailable library routines.
- Many complex functions require comprehensive test code to verify or validate I/O and proper operation. Intermediate values may be tested and output as well. After verification, you may wish to retain the test cases for future reference. You can include them in conditional blocks you control with a macro. For example:
#define DEBUG 0
The following test case compiles only when DEBUG is defined to a value other than 0.
#if DEBUG /*** Test Case ***/
.
.
.
#endif
- Often, it is necessary to replace or rewrite certain sections of a working program. Conditionals allow you to retain old code in the source file by placing it in a conditional block. For example:
#if 0 /*** Old code from 1999 ***/
.
.
.
#endif
Following is a list of the available conditional compilation directives. | Directive | Description |
|---|
| #elif | Initiates an alternative branch of the if condition, when the previous #if, #ifdef, #ifndef, or #elif branch was not taken. | | #else | Initiates an alternative branch when the previous #if, #ifdef, or #ifndef branch was not taken. | | #endif | Ends a #if, #ifdef, #ifndef, #elif, or #else block. | | #ifdef | Evaluates an expression for conditional compilation. The argument to be evaluated is the name of a definition. | | #ifndef | Same as #ifdef but the evaluation succeeds if the definition is not defined. | | #if | Evaluates an expression for conditional compilation. |
|
|