Page d'accueil encyclopedie-enligne.com en page d'accueil
Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées

Macro-définition

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.

Macros en programmation

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 expansée comme ((x) < 0 ? - (x) : (x)).

Sur cet exemple, on voit bien un des dangers dus à la nature purement syntaxe des macro-définitions : 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 expansé, 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.

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.

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 Microsoft Word contiennent un petit langage de programmation permettant de commander les fonctionnalités du logiciel. On appelle souvent les programmes dans ce genre de langages des macros.





This site support the Wikimedia Foundation. This Article originally from Wikipedia. All text is available under the terms of the GNU Free Documentation License Page HistoryOriginal ArticleWikipedia