Directives de compilation : #if
La directive
#if
permet de ne pas prendre en compte certaines lignes du programme source lors de la compilation.On peut par exemple s'en servir pour mettre en place la création de traces d'exécution en affichant le contenu des variables utilisées et ainsi vérifier la bonne exécution du programme.
Pour supprimer la trace il suffit ensuite de donner la valeur faux à la constante testée par le
#if
.
Définition : Syntaxe
#if CONSTANTE
...
#else
....
#endif
#if
: indique le début de la partie du programme source affectée par cette directive et teste la valeur vraie ou fausse de la constanteCONSTANTE
.CONSTANTE
est une constante définie par la directive#define
#else
: n'est pas obligatoire et propose une autre action à entreprendre dans le cas oùCONSTANTE
est fausse.#endif
: termine la partie du programme source affectée par cette directive ouverte par#if
Exemple :
#define TRACE 1
......
#if TRACE
printf("la variable nom contient : %s\n",nom);
#endif
Lors de la compilation si
TRACE
a la valeur vraie, leprintf
sera pris en compte et sera affiché lors de l'exécution.Pour supprimer cet affichage, il faut donner la valeur fausse à
TRACE
(#define TRACE 0
).
Variante : #ifndef
Il existe une instruction #ifndef
qui permet de tester l'existence d'une constante. Par exemple :
//Si la constante CONSTANTES_H a déjà été définie, ce qui suit ne sera pas compilé.
/* CONSTANTES_H */
On utilise cette structure dans les fichiers d'entête pour éviter qu'ils ne soient chargés plusieurs fois. Ainsi, si un fichier d'entête est chargé une première fois, la constante se trouve alors définie. Il le fichier est chargé une seconde fois, la constante étant déjà définie, le contenu du fichier ne sera pas chargé.