Macro-définition

Macro-définition
Page d'aide sur l'homonymie Pour les articles homonymes, voir Macro.

En programmation informatique, une macro-définition ou simplement macro est l'association d'un texte de remplacement à un identificateur, tel que l'identificateur est remplacé par le texte dans tout usage ultérieur. Le plus souvent, on permet également le passage de paramètres syntaxiques. L'usage d'une macro comme instruction est souvent appelée macro-instruction et l'opération de remplacement d'une macro-instruction par sa définition la macro-expansion. Les macros sont donc un moyen de faire de la métaprogrammation.

Sommaire

Macros en programmation

Par substitutions de chaînes de caractères

Ainsi, par exemple, en langage C, define introduit une macro-définition. On pourra par exemple introduire la valeur absolue comme une macro-instruction : #define abs(x) ((x) < 0 ? - (x) : (x)). Cela signifie qu'à chaque fois que le programme contiendra une construction de la forme abs(x)x est une expression quelconque, cette construction sera étendue comme ((x) < 0 ? - (x) : (x)).

Sur cet exemple, on observe l'un des dangers liés à des macro-définitions fondées sur des substitutions de chaînes de caractères : on ne vérifie absolument pas que x a un type arithmétique au moment de l'appel de la macro, et l'utilisateur ne se rendra compte d'éventuels problèmes que lors de compilation du code étendu, avec un message d'erreur faisant référence au code après expansion. Par ailleurs, si l'évaluation de x est coûteuse ou provoque des effets de bords, des problèmes se poseront puisque x sera évalué plusieurs fois.

Par transformation source à source

Dans la famille Lisp

Le langage Lisp permet de puissantes définitions de macros, avec manipulation de la syntaxe abstraite du code en paramètre par un programme Lisp. Les langages Common Lisp (CL), Scheme et Dylan ont un système de macros de ce type. Dans le cas de CL et Scheme, qui sont constitués de s-expressions, l'écriture des macros est naturelle car le code source manipulé est déjà sous la forme d'un arbre de syntaxe (c'est tout l'intérêt de cette représentation du code). Dans le cas de Dylan, la syntaxe concrète du langage, irrégulière à la façon de Haskell - dont elle s'inspire - complique la tâche du programmeur de macros à cause de l'écart entre l'apparence du code et sa structure syntaxique abstraite.

Primitives

La primitive defmacro (dans CL) prend en entrée un ensemble de s-expressions non évaluées et renvoie en sortie une transformation syntaxique de ces expressions (une nouvelle s-expression). Il est possible de réaliser toutes sortes de vérifications statiques et de garantir la correction du code produit. Ce système est infiniment plus robuste que les substitutions de chaînes de caractères. Les macros de CL peuvent souffrir de la capture de variable accidentelle liée à l'utilisation dans une macro d'un symbole qui existe déjà dans l'environnement d'expansion de la macro.

Scheme a les primitives defmacro (identique à ce qui existe dans CL), syntax-rules et define-syntax qui sont plus complexes, plus difficiles à utiliser également mais qui présentent, selon ses défenseurs, l'avantage d'éviter systématiquement la capture non intentionnelle de variable : on l'appelle un système de macros hygiénique.

Types de macros

Il existe différents types de macros en Lisp, nous examinons spécifiquement les macros de CL :

  • macros-fonctions (transformation de source à source),
  • macros de lecteur (en: READER MACROS) qui permettent de modifier la table de lecture de la fonction READ (le parseur CL standard), par exemple pour lire et interpréter des syntaxes différentes des s-expressions,
  • macros de compilateur (en: COMPILER MACROS) qui permettent de spécifier le code d'une fonction pour des valeurs (ou domaines) particulières des paramètres.

Macros dans certains logiciels

Certains logiciels ou environnements permettent d'associer des suites d'instructions complexes à des touches clavier  on parle alors de macros clavier.

Certains logiciels tels que ceux de la suite bureautique Microsoft Office contiennent un petit langage de programmation (Visual Basic for Applications - VBA) permettant de commander les fonctionnalités du logiciel. On appelle souvent les programmes dans ce genre de langages des macros.


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Macro-définition de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Macro-Définition — Pour les articles homonymes, voir Macro. En programmation informatique, une macro définition ou simplement macro est l association d un texte de remplacement à un identificateur, tel que l identificateur est remplacé par le texte dans tout usage… …   Wikipédia en Français

  • Macro-definition — Macro définition Pour les articles homonymes, voir Macro. En programmation informatique, une macro définition ou simplement macro est l association d un texte de remplacement à un identificateur, tel que l identificateur est remplacé par le texte …   Wikipédia en Français

  • macro definition — makroapibrėžtis statusas T sritis informatika apibrėžtis Interaktyvioje sistemoje – į atmintį įrašyta komandų ir klavišų paspaudimų seka ir apibrėžta, kaip kreiptis į tą seką, kad ji būtų vykdoma: sparčiaisiais klavišais arba tai apibrėžčiai… …   Enciklopedinis kompiuterijos žodynas

  • macro definition — makroapibrėžtis statusas T sritis informatika apibrėžtis Programavime – aprašytas vardas ir tuo vardu pavadintas tekstas, kuriuo ↑makroprocesorius turi pakeisti kiekvieną kartą paminėtą tą vardą programoje. Makroapibrėžtis gali turėti parametrų.… …   Enciklopedinis kompiuterijos žodynas

  • macro definition library — makrobiblioteka statusas T sritis informatika apibrėžtis ↑Makroapibrėžčių rinkinys. Gali panaudoti ↑makroprocesorius, programoje aptiktus makrokreipinius pakeisdamas tekstais, paimtais iš biliotekoje esančių makroapibrėžčių. atitikmenys: angl.… …   Enciklopedinis kompiuterijos žodynas

  • Macro-instruction — Macro définition Pour les articles homonymes, voir Macro. En programmation informatique, une macro définition ou simplement macro est l association d un texte de remplacement à un identificateur, tel que l identificateur est remplacé par le texte …   Wikipédia en Français

  • Macro (homonymie) — Macro Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

  • Macro-commande — Pour les articles homonymes, voir Macro. Sur les autres projets Wikimedia : « Macro commande », sur le Wiktionnaire (dictionnaire universel) En programmation, une macro commande est une suite de commandes[1 …   Wikipédia en Français

  • Macro —  Pour l’article homophone, voir maquereau. Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Macro » …   Wikipédia en Français

  • Macro- — Macros Macros est un mot grec μακρός signifiant « long » ou « mince ». Ce terme est à l’origine du préfixe macro lequel signifie désormais « grand ». Dans ce contexte il s’oppose habituellement à micro , petit ou… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”