Directives #ifdef et #ifndef
Directives de préprocesseur qui déterminent si une constante ou une macro de préprocesseur spécifique est définie.
identificateur #ifdef ... |
---|
#endif |
identificateur de #ifndef ... |
#endif |
Paramètres
Élément | Description |
---|---|
Identificateur |
Identificateur de la constante ou de la macro à case activée. |
Notes
Vous pouvez utiliser les directives #ifdef et #ifndef partout où les #if peuvent être utilisées. L’instruction #ifdef équivaut à la directive ) . Ces directives case activée uniquement pour la présence ou l’absence d’identificateurs définis à l’aide de la directive #define, et non pour les 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’utilisation de l’opérateur défini avec la directive #if est préférable.
La directive #ifndef vérifie l’inverse de la condition vérifiée par #ifdef. Si l’identificateur n’est pas défini, la condition est true (différente de zéro) ; sinon, la condition est false (zéro).
Exemples
identifier peut être passé à partir de la ligne de commande à l'aide de l'option /D. Jusqu'à 30 macros peuvent être spécifiées avec /D. Cela est utile pour vérifier si une définition existe, car une définition peut être transmise à partir de la ligne de commande. L’exemple suivant utilise ce comportement pour déterminer s’il faut exécuter une application en mode test.
// PROG.CPP
#ifndef test
#define final
#endif
int main()
{
}
Lors de la compilation à l’aide de la commande suivante, prog.cpp est compilé en mode test ; sinon, elle sera compilée en mode final.
CL.EXE /Dtest prog.cpp