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.
Une macro est un motif de substitution de texte pouvant prendre des arguments. Un langage de macro copie le texte donné en entrée sur sa sortie. Au cours du processus, le texte est décomposé en unités lexicales, et chaque fois qu'un nom de macro est rencontré, celui-ci est replacé par sa définition. Lorsque après une substitution, l'analyse reprend au début du texte inséré, le langage est dit récursif. La plupart des langages disposent également de structures conditionnelles.
L'idée d'utiliser ce mécanisme afin d'automatiser la génération de partie de code répétitives date de l'assembleur des années 1950. Cette idée a été formalisée en 1959 et 1960 en y introduisant les concepts de récursivité et de structure conditionnelle. Différentes implémentations de langage de macro ont été réalisées dans les années suivantes, GPM (1965), M4 (1977).
Les premiers langages faisaient une utilisation intensive de macros, celles-ci représentant une alternative à l'utilisation de fonctions ou de procédures lorsque le coût d'appel de la routine est important face ou coût de son traitement.
Le préprocesseur du langage C utilise ainsi un langage de macro. La directive #define introduit une macro-définition qui permet de déclarer :
une constante ;
une macro-instruction ;
un type personnalisé.
Une constante peut être déclarée par la directive #define NOMBRE_UTILISATEURS 25 + 3.
À chaque fois que le préprocesseur du compilateur rencontre l'étiquette NOMBRE_UTILISATEURS dans le code source, il la remplace par 25 + 3.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Discrete mathematics is a discipline with applications to almost all areas of study. It provides a set of indispensable tools to computer science in particular. This course reviews (familiar) topics a
Le cours donne aux étudiants des solides connaissances théoriques en hydraulique fluviale, et enseigne les bases de l'ingénierie fluviale dans le but de concilier la protection contre les crues et la
The principles of 3D surface (SEM) reconstruction and its limitations will be explained. 3D volume reconstruction and tomography methods by electron microscopy (SEM/FIB and TEM) will be explained and
thumb|Fragment de code écrit dans le langage de programmation JavaScript. Un langage de programmation est un langage informatique destiné à formuler des algorithmes et produire des programmes informatiques qui les appliquent. D'une manière similaire à une langue naturelle, un langage de programmation est composé d'un alphabet, d'un vocabulaire, de règles de grammaire, de significations, mais aussi d'un environnement de traduction censé rendre sa syntaxe compréhensible par la machine.
Scheme (prononciation : ) est un langage de programmation dérivé du langage fonctionnel Lisp, créé dans les années 1970 au Massachusetts Institute of Technology (MIT) par Gerald Jay Sussman et Guy L. Steele. Le but des créateurs du langage était d'épurer le Lisp en conservant les aspects essentiels, la flexibilité et la puissance expressive. Scheme a donc une syntaxe extrêmement simple, avec un nombre très limité de mots-clés. Comme en Lisp, la notation préfixée permet de s'affranchir d'une précédence des opérateurs.
Linux ou GNU/Linux est une famille de systèmes d'exploitation open source de type Unix fondés sur le noyau Linux créé en 1991 par Linus Torvalds. De nombreuses distributions Linux ont depuis vu le jour et constituent un important vecteur de popularisation du mouvement du logiciel libre. Si, à l'origine, Linux a été développé pour les ordinateurs compatibles PC, il n'a jamais équipé qu'une très faible part des ordinateurs personnels.
Explore la dualité d'assemblage dans les microcontrôleurs, couvrant les opérations de bits, les techniques de masquage, les macros, les sous-programmes et la gestion des piles.
The Dependent Object Type (DOT) calculus was designed to put Scala on a sound basis, but while DOT relies on structural subtyping, Scala is a fundamentally class-based language. This impedance mismatch means that a proof of DOT soundness by itself is ...
Macro annotations are an important feature in Scala 2 macro system. Many projects use macro annotations to implement their systems or libraries. Due to the unportability of Scala 2 macro system, Scala 3 redesigns the macro system to make it more reliable a ...
2022
, , ,
We study the average robustness notion in deep neural networks in (selected) wide and narrow, deep and shallow, as well as lazy and non-lazy training settings. We prove that in the under-parameterized setting, width has a negative effect while it improves ...