La compilation dun programme se déroule en trois phases. La première est exécutée par le préprocesseur, elle vise à remplacer les directives de compilation par du texte C++ normal. La seconde est la compilation proprement dite. La troisième est lédition de liens.
Le préprocesseur recherche dans une ligne des macros pour les transformer (voir paragraphe suivant), et des directives de compilation ; ces directives commencent par le symbole #
et se terminent avec la fin de la ligne :
#directive [paramètres]
On peut placer des espaces blancs avant et après la directive mais, contrairement au compilateur, les sauts de lignes et les commentaires ne sont pas considérés comme des blancs par le préprocesseur. Par conséquent, on ne doit pas couper une ligne de directive, ni y placer un commentaire qui pourrait poser problème. Notons quil ne faut pas de point-virgule en fin de ligne.
Si la directive ne tient pas sur une seule ligne, il suffit décrire le caractère \
juste avant le saut de ligne ; dans ce cas, la ligne courante est considérée comme la suite de la précédente, la paire \
+ saut de ligne étant ignorée. Ainsi :
#define CHAINE "Ceci est une très très longue \ chaîne de caractères"
sera considérée comme une seule ligne ; rappelons que ceci est vrai aussi du compilateur qui ignore les paires \
+ saut de ligne (chapitre 1).
La directive nulle est constituée dun symbole #
seul sur une ligne ; elle est ignorée.
Nous détaillons ci-après les principales directives de compilation.
#include
Nous avons déjà utilisé la directive dinclusion. Elle indique au préprocesseur de remplacer la ligne courante par lensemble des lignes du fichier nommé en paramètre. On lutilise essentiellement en pratique pour inclure les en-têtes de librairies (fichiers *.h
), comme on le verra plus en détail dans le paragraphe sur léditeur de liens.
Il existe trois variantes de la directive dinclusion, indiquant au préprocesseur comment trouver le fichier à inclure. Lécriture :
#include <fichier>
indique au préprocesseur daller chercher le fichier dans le ou les répertoires dinclusion spécialement définis comme tels dans lenvironnement du système ou du compilateur. On lutilise essentiellement pour les fichiers en-têtes fournis avec le compilateur (librairies).
Lécriture :
#include "fichier"
indique au préprocesseur de chercher le fichier dabord dans le répertoire courant, puis éventuellement dans le ou les répertoires dinclusion. On lutilise surtout pour les fichiers den-têtes faisant partie du projet courant et définis pour lui.
Dans les deux cas, on peut spécifier un chemin daccès pour le fichier ; les écritures sont alors équivalentes.
Enfin lécriture :
#include identificateur
provoque le remplacement de lidentificateur par la macro de ce nom ; celle-ci doit avoir été définie (voir le paragraphe sur les macros) et correspondre à un nom de fichier correct enclos entre < >
ou entre guillemets " "
.
Précédent | Sommaire | Suivant |