c:conditions
Un article de Polydoc.
Le préprocesseur offre un ensemble de commandes de conditions :
- #if + macro ou variable : condition
- #ifdef + nom de macro ou variable : vérifie si cette dernière est définie
- #ifndef + nom de macro ou variable : contraire du précèdent
- #else : si aucune des conditions précédentes ne sont pas vérifiées
- #elif : si la condition précédente n'est pas vérifiée
- #endif : fin du bloc conditionnel
Elles sont très utilisées pour notamment éviter les inclusions infinies lorsqu'on fait de la programmation modulaire (avec plusieurs fichiers .h et .c) : si un fichier "a" contient un #include du fichier b, et que le fichier b contient un #include du fichier a, le préprocesseur cherchera à inclure les 2 fichiers entre eux indéfiniment, ce qui peut être évité en plaçant en haut de chaque fichier.h des directives sur ce modèle :
#ifndef DEF_FUNC #define DEF_FUNC //Pas besoin de définir de valeur #include <stdio.h> #include "fichierB.h" //[Reste du code...] #endif
On peut l'utiliser également pour limiter du code à un OS particulier :
#define WINDOWS //[Code portable...] #idfef WINDOWS system("PAUSE"); //La plupart des instructions system() ne sont pas portables #endif

