#define (C++)
Remonter à Définition et annulation de la définition des macros - Index
Syntaxe
#define macro_identifier <token_sequence> #define macro_identifier(<arg_list>) <token_sequence>
Description
La directive #define définit une macro. Les macros fournissent un mécanisme de remplacement des tokens avec ou sans un ensemble de paramètres de type fonction, formels.
Chaque occurrence de macro_identifier
dans votre code source qui suit cette ligne de contrôle sera remplacée à la position originale par la séquence token_sequence
éventuellement vide (il existe certaines exceptions dont nous ferons état ultérieurement). De tels remplacements sont connus sous le terme "développement de macro" ou "expansion de macro". La séquence token_sequence
est parfois appelée le corps de la macro.
Une séquence token_sequence
vide a pour conséquence le retrait de chaque macro_identifier
affecté du code source.
Après chaque développement de macro individuel, une analyse supplémentaire du nouveau texte développé est effectuée. Cela permet l'imbrication de macros imbriquées : Le texte développé peut contenir des identificateurs de macros qui sont sujets à remplacement. Néanmoins, si la macro, après son développement, fournit un résultat qui ressemble à une directive de préprocesseur, la directive ne sera pas reconnue par le préprocesseur. Voici les restrictions du développement de macro :
- Toutes les occurrences de
macro_identifier
trouvées dans les chaînes littérales, les constantes caractère ou les commentaires du code source ne sont pas développées. - Une macro ne sera pas développée durant son propre développement (ainsi
#define A A
ne se développera pas indéfiniment).
Exemple
#define HI "Have a nice day!" #define empty #define NIL "" #define GETSTD #include <stdio.h>
La deuxième syntaxe permet la création de macros avec arguments ou de macros de type fonction.