Partage via


#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 .

Syntaxe

#ifdef identifier
#ifndef identifier

Ces directives sont équivalentes à :

#if defined identifier
#if !defined identifier

Notes

Vous pouvez utiliser les directives et #ifndef les #ifdef directives n’importe où#if. L’instruction #ifdef identifier est équivalente au moment identifier#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, #undefla 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

Voir aussi

Directives de préprocesseur