© Éditions Eyrolles
207
chapitre n° 12
Le préprocesseur
Une directive :
#define entier int
placée en début de programme, permettra d’écrire en français les déclarations de variables
entières. Ainsi, par exemple, ces instructions :
entier a, b ;
entier * p ;
seront remplacées par :
int a, b ;
int * p ;
Il est possible de demander de faire apparaître dans le texte de substitution un symbole déjà
défini. Par exemple, avec ces directives :
#define nbmax 5
....
#define taille nbmax + 1
Chaque mot taille apparaissant dans la suite du programme sera systématiquement remplacé par 5+1. Notez bien que taille ne sera pas remplacé exactement par 6 mais, étant
donné que le compilateur accepte les expressions constantes là où les constantes sont autorisées,
le résultat sera comparable (après compilation).
Il est même possible de demander de substituer à un symbole un texte vide. Par exemple, avec
cette directive :
#define rien
tous les symboles rien figurant dans la suite du programme seront remplacés par un texte
vide. Tout se passera donc comme s’ils ne figuraient pas dans le programme.
Nous verrons qu’une telle possibilité n’est pas aussi fantaisiste qu’il y paraît au premier abord
puisqu’elle pourra intervenir dans la compilation conditionnelle.
Voici quelques derniers exemples vous montrant comment résumer en un seul mot une instruction C :
#define bonjour printf("bonjour")
#define affiche printf("resultat %d\n", a)
#define ligne
printf("\n")
Notez que nous aurions pu inclure le point-virgule de fin dans le texte de substitution.
D’une manière générale, la syntaxe de cette directive fait que le symbole à remplacer ne peut
contenir d’espace (puisque le premier espace sert de délimiteur entre le symbole à substituer et
le texte de substitution). Le texte de substitution, quant à lui, peut contenir autant d’espaces
Delannoy Livre.book Page 207 Mercredi, 6. mai 2009 4:26 16
Précédent

- 220/281

Suivant