The #ifdef and
#ifndef Directives
The #ifdef
and #ifndef directives perform the same task as the #if
directive when it is used with defined( identifier ).
Syntax
#ifdef
identifier
#ifndef
identifier
is equivalent
to
#if
defined identifier
#if
!defined identifier
You
can use the #ifdef and #ifndef directives anywhere #if
can be used. The #ifdef identifier statement is equivalent to
#if 1 when identifier has been
defined, and it is equivalent to #if 0
when
identifier has not been defined or has been undefined with the #undef
directive. These directives check only for the presence or absence of
identifiers defined with #define, 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 defined( identifier ) constant expression
used with the #if directive is preferred.
The #ifndef
directive checks for the opposite of the condition checked by #ifdef.
If the identifier has not been defined (or its definition has been removed
with #undef), the condition is true (nonzero). Otherwise, the
condition is false (0).
Microsoft
Specific
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. For example:
// PROG.CPP
#ifndef test // These three statements go in your source code.
#define final
#endif
CL /Dtest prog.cpp // This is the command for compilation.
|