Macro-expansion

Définition, exemples et bonnes pratiques

À retenir

  • C'est un remplacement de texte automatique et systématique.
  • Cela se produit généralement avant la compilation du programme.
  • Cela permet de simplifier l'écriture du code et d'éviter les répétitions.

La macro-expansion est le mécanisme par lequel un raccourci ou un nom (appelé macro) est remplacé par son code détaillé juste avant que l'ordinateur ne lise le programme. C'est un peu comme si vous utilisiez une abréviation dans un texte et qu'un logiciel la remplaçait automatiquement par la phrase complète avant l'impression.

Étymologie

Vient du grec makros (grand/long) et du latin expandere (étendre). En informatique, cela désigne l'action d'étendre un petit fragment de texte pour en faire un bloc d'instructions plus complet.

Exemples d'usage

  • En langage C, l'utilisation de #define PI 3.14 : chaque fois que le mot PI apparaît, il est remplacé par 3.14 avant la compilation.
  • Dans un traitement de texte, un raccourci clavier qui insère automatiquement votre signature complète.
  • En assembleur, une instruction simplifiée qui se transforme en une suite d'instructions machines réelles.

Cas d'usage

Ce concept est principalement utilisé lors de la phase de pré-traitement (pre-processing) en programmation pour éviter de répéter du code identique ou pour définir des constantes globales. On le retrouve aussi dans certains logiciels de bureautique pour automatiser des tâches répétitives.

Bonnes pratiques

Il faut rester vigilant avec la macro-expansion, car elle peut rendre le débogage difficile : l'erreur signalée par l'ordinateur portera sur le code "étendu" que vous ne voyez pas directement dans votre fichier source. Il est recommandé de bien utiliser des parenthèses dans les définitions pour éviter les erreurs de calcul imprévues.

Synonymes

substitution de macro expansion textuelle

Conseil

Si vous débutez, voyez la macro-expansion comme un outil de "rechercher et remplacer" intelligent. Si votre macro devient trop longue ou complexe, préférez l'utilisation d'une fonction classique, plus facile à tester et à corriger.

Questions fréquentes

Quelle est la différence entre une macro et une fonction ?

Une macro est un copier-coller de texte avant l'exécution, tandis qu'une fonction est un bloc de code séparé vers lequel le programme se déplace pendant qu'il tourne.

Est-ce que la macro-expansion ralentit le programme ?

Non, au contraire, elle peut parfois l'accélérer légèrement car elle supprime le besoin d'appeler une fonction, mais elle peut augmenter la taille finale du fichier.