#define (C++)

De RAD Studio
Aller à : navigation, rechercher

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.

Voir aussi