Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Preprocessor directives that determine whether a specific preprocessor constant or macro is defined.
#ifdef identifier ... |
---|
#endif |
#ifndef identifier ... |
#endif |
Parameters
Item | Description |
---|---|
identifier |
Identifier of the constant or macro to check. |
Remarks
You can use the #ifdef and #ifndef directives anywhere that the #if can be used. The #ifdef statement is equivalent to ) directive. These directives check only for the presence or absence of identifiers defined using the #define directive, not for identifiers declared in the C or C++ source code.
These directives are provided only for compatibility with previous versions of the language. The use of the defined operator with the #if directive is preferred.
The #ifndef directive checks for the opposite of the condition checked by #ifdef. If the identifier is not defined, the condition is true (nonzero); otherwise, the condition is false (zero).
Examples
The identifier can be passed from the command line using the /D option. Up to 30 macros can be specified with /D. This is useful for checking whether a definition exists, because a definition can be passed from the command line. The following example uses this behavior to determine whether to run an application in test mode.
// PROG.CPP
#ifndef test
#define final
#endif
int main()
{
}
When compiled using the following command, prog.cpp will compile in test mode; otherwise, it will compile in final mode.
CL.EXE /Dtest prog.cpp