#ifdef
et #ifndef
directives (C/C++)
Les #ifdef
directives de préprocesseur ont #ifndef
le même effet que la #if
directive lorsqu’elle est utilisée avec l’opérateur defined
.
#ifdef
identifier
#ifndef
identifier
Ces directives sont équivalentes à :
#if defined
identifier
#if !defined
identifier
Vous pouvez utiliser les directives et #ifndef
les #ifdef
directives n’importe où#if
. L’instruction #ifdef
identifier
est équivalente au moment identifier
où #if 1
elle a été définie. Elle équivaut au #if 0
moment identifier
où elle n’a pas été définie ou n’a pas été définie par la #undef
directive. Ces directives vérifient uniquement la présence ou l'absence d'identificateurs définis avec #define
, et non d'identificateurs déclarés dans le code source C ou C++.
Ces directives sont fournies uniquement pour des raisons de compatibilité avec les versions antérieures du langage. L’expression defined(
)
identifier
constante utilisée avec la #if
directive est préférée.
La #ifndef
directive vérifie l’opposé de la condition vérifiée par #ifdef
. Si l’identificateur n’a pas été défini ou si sa définition a été supprimée, #undef
la condition est vraie (différente de zéro). Sinon, la condition n'est pas vérifiée (0).
Section spécifique à Microsoft
L’identificateur peut être transmis à partir de la ligne de commande à l’aide de l’option/D
. Jusqu’à 30 macros peuvent être spécifiées avec /D
.
La #ifdef
directive est utile pour vérifier si une définition existe, car une définition peut être transmise à partir de la ligne de commande. Par exemple :
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
FIN de la section spécifique à Microsoft