Chapitre 16 : Le Préprocesseur et les Macros¶
Découvrez comment transformer votre code source avant même qu'il ne soit transmis au compilateur.
Concepts abordés¶
- Directives de préprocesseur : Utilisation de
#include,#define,#undef. - Macros fonctionnelles : Créer des raccourcis de code avec des paramètres (ex:
MAX,MIN,ABS). - Compilation conditionnelle : Utiliser
#ifdef,#ifndef,#else,#endifpour compiler différentes parties du code selon le contexte (ex: mode DEBUG vs mode RELEASE). - Macros prédéfinies : Utilisation de
__FILE__,__LINE__,__DATE__pour le débogage et la traçabilité. - Opérateur de mise en chaîne (#) : Transformer un argument de macro en chaîne de caractères.
Explications du code¶
preprocesseur.c¶
Ce fichier illustre la puissance des macros pour simplifier les calculs mathématiques, créer des outils de journalisation (logs) conditionnels et utiliser les informations système fournies par le compilateur.
Conseils et astuces¶
- Parenthèses obligatoires : Dans une macro, entourez toujours vos paramètres et l'expression entière de parenthèses (ex:
#define CARRE(x) ((x) * (x))). Sans elles, les priorités d'opérations peuvent causer des bugs catastrophiques. - Effets de bord : Soyez prudent avec les macros :
CARRE(i++)incrémenteraideux fois ! Pour des logiques complexes, préférez toujours une fonction classique ou une fonctionstatic inline. - Include Guards : Utilisez toujours des gardes (ex:
#ifndef MON_FICHIER_H) dans vos fichiers.hpour éviter les erreurs de double inclusion.