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.
Elle permet d’inclure des fichiers d’entête.
Syntaxe :
#include "fichier"
ou
#include
Exemple :
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.
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 :
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 :
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 :
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")