préprocesseur

Notions liées : directive

Le préprocesseur est un logiciel qui effectue une transformation du texte source avant de passer la main au compilateur qui, lui, en fait l'analyse et traduit le texte en un programme objet.

En C, le préprocesseur traite les directives dont le nom est précédé par le caractère # dans le source :

Il y a 3 sortes de directives :

  • les directives de substitution de chaines de caractères dans le texte source (définition, définition paramétrée ou macr-instruction ;
  • les directives d'inclusion d'un fichier source dans un autre ;
  • les directives de compilation conditionnelle.

Les directives de substitution de chaines de caractères dans le texte source

La substitution symbolique, effectuée à l'aide de la directive #define,   prend 2 formes :

La portée d'une directive #define commence à la directive jusqu'à la fin du fichier, sauf s'il ya une directive #undef.

La substitution simple

#define EOF -1

...

#undef EOF

Toutes les occurrences du symbole dans la portée sont remplacées par la suite de caractères. 

#define TAILLE 100

#define EOF -1

#define FICH "/usr/durand/fichier1"

#define BEGIN {

#define  END }

Substitution paramétrée - macro-instruction

Soit la définition suivante. On voit qu'elle ressemble à une définition de fonction, sauf que les paramètres ne sont pas typés et qu'il n'y a pas de résultat.

#define max(a,b) ((a)> (b) ? (a) : (b))

La ligne :

max (x, 67)

est traduit par :

((x)> (67) ? (x) : (67))

Dans la ligne précédente, toutes les expressions sont mises entre parenthèses. Attention à ne pas les oublier.

En Ada, par exemple, un pragma pemet au programmeur d 

Les directives d'inclusion d'un fichier source dans un autre 

La syntaxe pour l'inclusion de fichiers source prend 2 formes.

Pour les fichiers appartenant à un utilisateur : #include "/users/dupont/projet1/fic2"

Pour les fichiers spéciaux de suffixe .h (ces fichiers se trouvent dans le répertoire /usr/include où sont décrites les déclarations nécessaires aux fonction de la librairie standard), la syntaxe est #include <stdio.h>

 

Les directives de compilation conditionnelle

» Glossaire du langage C