Directives de compilation : #if
La directive
#ifpermet 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.CONSTANTEest une constante définie par la directive#define#else: n'est pas obligatoire et propose une autre action à entreprendre dans le cas oùCONSTANTEest 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
TRACEa la valeur vraie, leprintfsera 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é.