À retenir
- C'est un remplacement de texte pur et simple avant la compilation.
- Elle facilite la mise à jour du programme (on modifie la valeur à un seul endroit).
- Elle rend le code beaucoup plus lisible pour les humains.
Une macro-constante est un nom symbolique que l'on donne à une valeur fixe dans le code source d'un programme. C'est une sorte d'étiquette qui sera automatiquement remplacée par sa valeur réelle juste avant que l'ordinateur ne traduise le programme (phase de précompilation), comme un raccourci clavier qui écrirait un texte complet à votre place.
Étymologie
Le terme vient du préfixe grec macros (grand, étendu) et du latin constans (qui se tient debout, stable). En informatique, une "macro" désigne une instruction qui déclenche une série de substitutions automatiques.
Exemples d'usage
#define PI 3.14159: chaque occurrence du mot PI dans le code sera remplacée par le nombre 3.14159.#define MAX_UTILISATEURS 100: permet de limiter la capacité d'un système en changeant un seul chiffre au début du code.
Cas d'usage
On l'utilise principalement pour éviter les "nombres magiques" (des chiffres jetés au milieu du code sans explication) et pour centraliser la configuration d'un logiciel (chemins de fichiers, limites techniques, versions).
Bonnes pratiques
Il est d'usage de les écrire intégralement en MAJUSCULES pour les distinguer des variables classiques. Il faut toutefois rester prudent car, contrairement aux variables constantes, les macros ne possèdent pas de type (entier, texte, etc.), ce qui peut parfois causer des erreurs de logique difficiles à détecter.
Synonymes
Antonymes
Conseil
Si vous débutez en C ou C++, utilisez les macro-constantes pour vos réglages globaux, mais préférez les constantes classiques (avec le mot-clé const) pour vos calculs internes afin de bénéficier de la sécurité du typage.
Questions fréquentes
Pourquoi ne pas utiliser une variable normale ?
Une macro-constante ne consomme pas de mémoire pendant l'exécution du programme car elle disparaît après le remplacement textuel, ce qui peut être avantageux sur de très petits systèmes.
Est-ce spécifique à un langage ?
On les retrouve massivement en langage C et C++, mais le concept de constante symbolique existe sous d'autres formes dans presque tous les langages de programmation.