Compiler une section de code en fonction d’une condition

Problème

Vous ne souhaitez compiler une section de code que si une condition est définie, comme par exemple du code spécifique à un système d’exploitation.

Solution

Utilisez les directives de compilation conditionnelle comme #if, #ifdef ou #ifndef.

Discussion

De la même façon que vous disposez de l’instruction if en C, le préprocesseur vous permet d’utiliser #if. Cette directive est à l’attention du préprocesseur et non du compilateur. En effet, si la condition est remplie, le préprocesseur recopie ce qui suit dans le code à compiler. Dans le cas inverse, le préprocesseur ignore la suite jusqu’au #endif et le compilateur n’a tout simplement pas connaissance de ce code. La différence fondamentale entre la directive #if et l’instruction if est donc que la première évalue la condition à la compilation (donc une bonne fois pour toutes) et la seconde à l’exécution.

La syntaxe de #if est la suivante :


#if condition 
/* Lignes à prendre en compte à la compilation 
 * si la condition est remplie 
 * et à effacer sinon. 
 */ 
#endif
 

Comme en C avec if, vous disposez aussi de la directive #else.

La condition est à écrire avec ce que le préprocesseur est en mesure de comprendre. Il s’agit principalement de :

  • Tester si une macro est définie (avec defined).

  • Comparer...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Écrire un fichier d'en-têtes
Suivant
Exécuter une fonction avant la fin du programme