#ifdef
directives et #ifndef
(C/C++)
Les #ifdef
directives de préprocesseur et #ifndef
ont le même effet que la #if
directive lorsqu’elle est utilisée avec l' defined
opérateur.
Syntaxe
#ifdef
identifier
#ifndef
identifier
Ces directives sont équivalentes à ce qui suit :
#if defined
identifier
#if !defined
identifier
Remarques
Vous pouvez utiliser les #ifdef
directives et #ifndef
partout où #if
elles peuvent être utilisées. L' #ifdef
identifier
instruction équivaut à #if 1
quand identifier
a été défini. Elle est équivalente à #if 0
lorsque identifier
n’a pas été défini ou qu’elle 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' defined(
identifier
)
expression constante utilisée avec la #if
directive est préférée.
La #ifndef
directive recherche l’inverse 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 avec, la condition est true (différente de #undef
zéro). Sinon, la condition n'est pas vérifiée (0).
Spécifique à Microsoft
L' identificateur peut être passé à partir de la ligne de commande à l’aide de l' /D
option. 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 passée à partir de la ligne de commande. Exemple :
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
FIN spécifique à Microsoft