#if
On peut contrôler ce qui sera compilé effectivement ou non, avec une clause adéquate. Si lon écrit :
#if condition .....#endif
la condition, qui doit être une constante numérique au format normal de C++, est évaluée par le préprocesseur ; si elle est non nulle, la clause #if
est ignorée ; si elle vaut zéro, tout ce qui se trouve entre #if
et #endif
est ignoré (et donc non compilé en particulier).
On peut utiliser dans lexpression le pseudo-opérateur unaire defined
qui renvoie 1 si lidentificateur qui le suit est défini (par #define
comme indiqué au paragraphe précédent), et 0 sinon. Par exemple, on peut écrire (les parenthèses sont facultatives) :
#if defined(__cplusplus) && !defined(__IOSTREAM_H)......#endif
Lécriture :
#if defined(identificateur)
peut être abrégée en :
#ifdef identificateur
De même, lécriture :
#if !defined(identificateur)
peut être abrégée en :
#ifndef identificateur
La clause #if
peut avoir une clause #else
, plus éventuellement des clauses intermédiaires #elif
(pour else if
). Voici un exemple :
#ifdef __cplusplus inline void ecrire (char *messg){ cout << messg; } #elif defined(_VIDEO) void ecrire(char *messg){ gotoxy(1, 25); printf("%s", messg); clreoln();}#else#define ecrire(messg) printf("%s", messg);#endif
Les clauses de compilation conditionnelles peuvent être imbriquées comme les clauses if
en C++.
Précédent | Sommaire | Suivant |