#ifdef, #ifndef, #endif

#ifdef, #ifndef, #endif


Il est possible de réaliser des conditions en langage préprocesseur !
Les directives que j'ai mises en titre servent à vérifier si une constante de préprocesseur est définie.

Mais comment la définir ? C'est tout simple, il suffit de faire :

#define WINDOWS

Je ne mets pas de valeur, elle est définie, le préprocesseur la connaît donc c'est bon.
On aurait pu mettre une valeur mais ça nous sert à rien ici donc autant ne pas se fatiguer .

La compilation conditionnelle

Grâce à ces directives, on peut effectuer une compilation conditionnelle.
Par exemple vous avez créé un programme en C pour 3 OS (Windows, Mac et Linux), vous avez donc 3 codes sources différents dans un seul fichier, bien regardez l'exemple qui suit :

#define WINDOWS

#ifdef WINDOWS
    // Code source pour Windows
#endif

#ifdef LINUX
    // Code source pour Linux
#endif

#ifdef MAC
    // Code source pour Mac
#endif

C'est comme ça que font les programmes multiplateformes pour s'adapter à l'OS (système d'exploitation).
Évidemment, il faudra compiler 3 fois le projet en changeant la constante définie.


Les inclusions infinies

Pour clore se chapitre et boucler le programme Calculatrice il faut que je vous parle des inclusions infinies !
Imaginez 2 headers, A.h et B.h. A.h inclut B.h et B.h inclut A.h :

Pas besoin d'être le premier de la classe pour comprendre qu'on a affaire à des inclusions infinies !

Tous vos headers doivent être protégés des inclusions infinies !
Notez que même stdio.h ou stdlib.h sont protégés !

Revenons à notre TP et corrigeons-le :

#ifndef HEADER_CALC
#define HEADER_CALC

double somme(double a, double b);
double difference(double a, int b);
double produit(double a, double b);
double quotient(double a, double b);

#endif

Si vous réfléchissez bien, les inclusions infinies sont évitées grâce à ces directives !

Voilà, le programme est complètement terminé !
Il est aux normes, vous pouvez le vendre et devenir riche !

Créé avec HelpNDoc Personal Edition: Comment protéger vos PDF avec le cryptage et les mots de passe