#include directive (C/C++)

Indique au préprocesseur d’inclure le contenu d’un fichier spécifié au point où la directive s’affiche.

Syntaxe

#include "path-spec"
#include <path-spec>

Notes

Vous pouvez organiser des définitions constantes et macros en fichiers include (également appelés fichiers d’en-tête), puis utiliser #include des directives pour les ajouter à n’importe quel fichier source. Les fichiers Include sont également utiles pour incorporer des déclarations de variables externes et de types de données complexes. Les types peuvent être définis et nommés une seule fois dans un fichier Include créé à cet effet.

La spécification de chemin d’accès est un nom de fichier qui peut éventuellement être précédé d’une spécification de répertoire. Le nom de fichier doit désigner un fichier existant. La syntaxe du path-spec dépend du système d’exploitation sur lequel le programme est compilé.

Pour plus d’informations sur la façon de référencer des assemblys dans une application C++ compilée à l’aide /clrde , consultez #using la directive.

Les deux formes de syntaxe entraînent le remplacement de la #include directive par l’intégralité du contenu du fichier spécifié. La différence entre les deux formulaires est l’ordre des chemins d’accès que le préprocesseur recherche lorsque le chemin d’accès est spécifié de manière incomplète. Le tableau ci-dessous montre la différence entre les deux formes de syntaxe.

Forme syntaxique Action
Forme avec guillemets Le préprocesseur recherche les fichiers Include dans l'ordre suivant :

1) Dans le même répertoire que le fichier qui contient l’instruction #include .

2) Dans les répertoires des fichiers inclus actuellement ouverts, dans l’ordre inverse dans lequel ils ont été ouverts. La recherche commence dans le répertoire du fichier Include parent et continue vers le haut, dans les répertoires de tous les fichiers Include grands-parents.

3) Le long du chemin spécifié par chaque /I option du compilateur.

4) Le long des chemins spécifiés par la variable d’environnement INCLUDE .
Forme avec crochets pointus Le préprocesseur recherche les fichiers Include dans l'ordre suivant :

1) Le long du chemin spécifié par chaque /I option du compilateur.

2) Lors de la compilation sur la ligne de commande, le long des chemins spécifiés par la variable d’environnement INCLUDE .

Le préprocesseur arrête de chercher dès qu'il trouve un fichier portant le nom spécifié. Si vous placez une spécification de chemin d’accès complète et non ambiguë pour le fichier include entre guillemets doubles (" "), le préprocesseur recherche uniquement cette spécification de chemin et ignore les répertoires standard.

Si le nom de fichier placé entre guillemets doubles est une spécification de chemin d’accès incomplète, le préprocesseur recherche d’abord le répertoire du fichier parent . Un fichier parent est le fichier qui contient la #include directive. Par exemple, si vous incluez un fichier nommé fichier2 dans un fichier nommé file1, fichier1 est le fichier parent.

Les fichiers Include peuvent être imbriqués : une #include directive peut apparaître dans un fichier nommé par une autre #include directive. Par exemple, file2 peut inclure le fichier3. Dans ce cas, file1 serait toujours le parent de file2, mais il s’agirait du grand-parent du fichier3.

Lorsque les fichiers include sont imbriqués et lors de la compilation se produit sur la ligne de commande, la recherche de répertoires commence dans le répertoire du fichier parent. Ensuite, il passe par les répertoires de tous les fichiers grands-parents. Autrement dit, la recherche commence par rapport au répertoire contenant la source actuellement traitée. Si le fichier est introuvable, la recherche passe aux répertoires spécifiés par l’option /I du compilateur (Répertoires include supplémentaires). Enfin, les répertoires spécifiés par la variable d’environnement INCLUDE sont recherchés.

Dans l’environnement de développement Visual Studio, la INCLUDE variable d’environnement est ignorée. Les valeurs spécifiées dans les propriétés du projet pour les répertoires include sont utilisées à la place. Pour plus d’informations sur la définition des répertoires Include dans Visual Studio, consultez Répertoires Include et Répertoires Include supplémentaires.

Cet exemple illustre l'inclusion d'un fichier à l'aide de crochets pointus :

#include <stdio.h>

L’exemple ajoute le contenu du fichier nommé stdio.h au programme source. Les crochets angle entraînent la recherche du préprocesseur dans les répertoires spécifiés par la INCLUDE variable d’environnement , stdio.haprès avoir recherché les répertoires spécifiés par l’option du /I compilateur.

L'exemple suivant illustre l'inclusion d'un fichier en utilisant la forme entre guillemets :

#include "defs.h"

L’exemple ajoute le contenu du fichier spécifié par defs.h le programme source. Les guillemets indiquent que le préprocesseur doit chercher d'abord dans le répertoire contenant le fichier source parent.

L'imbrication des fichiers Include peut atteindre jusqu'à 10 niveaux. Lorsque le traitement de l’imbrication #include est terminé, le préprocesseur continue d’insérer le fichier include parent englobant dans le fichier source d’origine.

Spécifique à Microsoft

Pour localiser les fichiers sources à inclure, le préprocesseur recherche d’abord les répertoires spécifiés par l’option du /I compilateur. Si l’option /I n’est pas présente ou si elle échoue, le préprocesseur utilise la INCLUDE variable d’environnement pour rechercher des fichiers include entre crochets. La variable d’environnement et l’option INCLUDE du compilateur peuvent contenir plusieurs chemins, séparés par des points-virgules (;)./I Si plusieurs répertoires apparaissent dans le cadre de l’option /I ou dans la INCLUDE variable d’environnement, le préprocesseur les recherche dans l’ordre dans lequel ils apparaissent.

Par exemple, la commande

CL /ID:\msvc\include myprog.c

entraîne la recherche du préprocesseur dans le répertoire D:\msvc\include\ pour inclure des fichiers tels que stdio.h. Les commandes

SET INCLUDE=D:\msvc\include
CL myprog.c

ont le même effet. Si les deux jeux de recherches échouent, une erreur irrécupérable du compilateur est générée.

Si le nom de fichier est entièrement spécifié pour un fichier include qui a un chemin d’accès qui inclut un signe deux-points (par exemple), F:\MSVC\SPECIAL\INCL\TEST.Hle préprocesseur suit le chemin d’accès.

Pour inclure des fichiers spécifiés, #include "path-spec"la recherche de répertoires commence dans le répertoire du fichier parent, puis passe par les répertoires des fichiers grands-parents. Autrement dit, la recherche commence par rapport au répertoire qui contient le fichier source en cours de traitement. S’il n’y a pas de fichier grand-parent et que le fichier est toujours introuvable, la recherche continue comme si le nom du fichier était placé entre crochets.

FIN de la section spécifique à Microsoft

Voir aussi

Directives de préprocesseur
/I (Répertoires include supplémentaires)