Les préprocesseurs

  1. Définition
  2. La directive #include
  3. La directive #include_next
  4. La directive #define
  5. Les macros
  6. La compilation conditionnelle
  7. #warning, #pragma

1. Définition

Un préprocesseur est un programme qui est analysé et exécuté avant la compilation. Il a pour rôle d’inclure des bouts de code source disponible dans un fichier, de faire la substitution de chaînes de caractères ou de faire une compilation conditionnelle.

Les commandes du préprocesseur commencent par un signe dièse.

2. La directive #include

Elle permet d’inclure des fichiers d’entête.

Syntaxe :
#include "fichier"
ou
#include

Exemple :

3. La directive #include_next

Elle fait la même chose que la directive #include sauf qu’elle indique au préprocesseur de continuer à chercher fichier à inclure et de l'inclure après le répertoire courant.

4. La directive #define

Elle permet de définir un identificateur qui au long du programme, sera remplacé par sa valeur avant la compilation.

Syntaxe :
#define identificateur valeur

Exemple :

Résultat :

5. Les macros

L’avantage du directive #define, ce qu’on peut créer des macros avec.

Mais c’est quoi les macros ?

On peut définir une macro comme étant le texte du remplacement lors du mécanisme qui consiste à définir des bouts de code qui seront réutilisés dans plusieurs endroits du programme.
Le cas que nous avons vu sur le point (4) s’agit de la macro de type objet. Ici ce qui nous intéresse, c’est la macro de type fonction.

Exemple :

6. La compilation conditionnelle

En langage préprocesseur, on peut aussi tester des conditions.
Et là, il y a en général deux façons de le faire :

Si la condition est liée à la valeur d’une expression, la syntaxe est ceci :
#if condition1
Code1 à compiler si condition1 est vraie
#elif condition2
Sinon si condition2 est vraie, Code2 à compiler
...
#elif condition-n
Sinon si condition-n est vraie, Code-n à compiler
#else
Sinon aucune condition ci-haut n’est vrai, compiler ce code
#endif

Ou bien si la condition est liée à l’existence d’un symbole, la syntaxe est ceci :
#ifdef symbole //ifdef = if defined
Si ça a été défini Code1 à compiler
#endif
Ou ceci :
#ifndef symbole
//if not defined
Code1 à compiler si condition1 est vraie
#endif

Exemple :

7. Les directives #pragma, #warning

Elles son utilisées pour générer des messages d’alertes.

#pragma est spécifique à un compilateur et elle permet la suppression des messages d’erreur.
#warning n’est pas une directive standard, mais elle permet d’alerter si une partie de code est dépréciée.

Utilisation:
#warning/pragma ("message")



Une question? Cliquez ici pour la poser.

Retour sur le portail du langage C/C++