#include
Direktive (C/C++)
Weist den Präprozessor an, den Inhalt einer angegebenen Datei an der Stelle einzuschließen, an der die Direktive angezeigt wird.
Syntax
#include "
Pfadspezifizierung"
#include <
Pfadspezifizierung>
Hinweise
Sie können Konstanten- und Makrodefinitionen in Dateien (auch als Headerdateien bezeichnet) organisieren und dann Direktiven verwenden #include
, um sie einer beliebigen Quelldatei hinzuzufügen. Includedateien sind auch nützlich, um Deklarationen von externen Variablen und komplexe Datentypen zu integrieren. Die Typen können nur einmal in einer für diesen Zweck erstellten Includedatei definiert und benannt werden.
Die Pfadspezifikation ist ein Dateiname, dem optional eine Verzeichnisspezifikation vorangestellt werden kann. Der Dateiname muss eine vorhandene Datei benennen. Die Syntax der Pfadspezifikation hängt vom Betriebssystem ab, auf dem das Programm kompiliert wird.
Informationen zum Verweisen auf Assemblys in einer C++-Anwendung, die mithilfe von /clr
C++-Anwendungen kompiliert wird, finden Sie unter #using
Direktive.
Beide Syntaxformen bewirken, dass die #include
Direktive durch den gesamten Inhalt der angegebenen Datei ersetzt wird. Der Unterschied zwischen den beiden Formularen ist die Reihenfolge der Pfade, die der Präprozessor durchsucht, wenn der Pfad unvollständig angegeben ist. In der folgenden Tabelle wird der Unterschied zwischen den beiden Syntaxformaten gezeigt.
Syntaxformat | Aktion |
---|---|
Format mit Anführungszeichen | Die Präprozessor sucht in dieser Reihenfolge nach Includedateien: 1) Im selben Verzeichnis wie die Datei, die die #include Anweisung enthält.2) In den Verzeichnissen der aktuell geöffneten enthalten Dateien in umgekehrter Reihenfolge, in der sie geöffnet wurden. Die Suche beginnt im Verzeichnis der übergeordneten Includedatei und wird nach oben durch die Verzeichnisse aller Includedateien der zweiten übergeordneten Ebene fortgesetzt. 3) Entlang des Pfads, der von jeder /I Compileroption angegeben wird.4) Entlang der Pfade, die durch die INCLUDE Umgebungsvariable angegeben werden. |
Format mit spitzer Klammer | Die Präprozessor sucht in dieser Reihenfolge nach Includedateien: 1) Entlang des Pfads, der von jeder /I Compileroption angegeben wird.2) Beim Kompilieren in der Befehlszeile entlang der Pfade, die durch die INCLUDE Umgebungsvariable angegeben werden. |
Der Präprozessor beendet die Suche, sobald eine Datei mit dem angegebenen Namen gefunden wird. Wenn Sie eine vollständige, eindeutige Pfadspezifikation für die Includedatei zwischen doppelten Anführungszeichen (" "
) einschließen, durchsucht der Präprozessor nur diese Pfadspezifikation und ignoriert die Standardverzeichnisse.
Wenn der In Anführungszeichen eingeschlossene Dateiname eine unvollständige Pfadangabe ist, durchsucht der Präprozessor zunächst das Verzeichnis der übergeordneten Datei. Eine übergeordnete Datei ist die Datei, die die #include
Direktive enthält. Wenn Sie beispielsweise eine Datei namens "Datei2" in eine Datei mit dem Namen "Datei1" einfügen, ist "file1" die übergeordnete Datei.
Einschließen von Dateien kann geschachtelt werden: Eine #include
Direktive kann in einer Datei angezeigt werden, die von einer anderen #include
Direktive benannt wird. Datei2 kann z. B. Datei3 enthalten. In diesem Fall wäre Datei1 weiterhin das übergeordnete Element von Datei2, aber es wäre der Großeltern von Datei3.
Wenn Dateien eingeschlossen sind und beim Kompilieren in der Befehlszeile auftritt, beginnt die Verzeichnissuche im Verzeichnis der übergeordneten Datei. Dann geht es durch die Verzeichnisse aller Großelterndateien. Dies bedeutet, dass die Suche relativ zum Verzeichnis beginnt, das die Quelldatei enthält, die gerade verarbeitet wird. Wenn die Datei nicht gefunden wird, wechselt die Suche zu Verzeichnissen, die durch die /I
Compileroption (Zusätzliche Includeverzeichnisse) angegeben werden. Schließlich werden die Verzeichnisse durchsucht, die durch die INCLUDE
Umgebungsvariable angegeben werden.
Innerhalb der Visual Studio-Entwicklungsumgebung wird die INCLUDE
Umgebungsvariable ignoriert. Stattdessen werden die in den Projekteigenschaften für Includeverzeichnisse angegebenen Werte verwendet. Weitere Informationen zum Festlegen der Includeverzeichnisse in Visual Studio finden Sie unter IncludeDirectories and Additional Include Directories.
In diesem Beispiel sehen Sie, wie mithilfe der spitzen Klammern Dateien in die Suche einbezogen werden:
#include <stdio.h>
Im Beispiel wird der Inhalt der Datei, die dem Quellprogramm benannt ist stdio.h
, hinzugefügt. Die eckigen Klammern führen dazu, dass der Präprozessor die Verzeichnisse durchsucht, nach denen die INCLUDE
Umgebungsvariable stdio.h
angegeben wird, nachdem verzeichnisse durchsucht werden, die von der /I
Compileroption angegeben werden.
Im nächsten Beispiel sehen Sie, wie mithilfe der Anführungszeichen Dateien in die Suche einbezogen werden:
#include "defs.h"
Im Beispiel wird der Inhalt der Datei, die vom defs.h
Quellprogramm angegeben wird, hinzugefügt. Die doppelten Anführungszeichen bewirken, dass der Präprozessor zuerst das Verzeichnis mit der übergeordneten Quelldatei durchsucht.
Includedateien können auf bis zu 10 Ebenen geschachtelt werden. Wenn die Verarbeitung der geschachtelten Datei #include
abgeschlossen ist, fügt der Präprozessor weiterhin die eingeschlossene übergeordnete Includedatei in die ursprüngliche Quelldatei ein.
Microsoft-spezifisch
Um die einzuschließden Quelldateien zu finden, durchsucht der Präprozessor zuerst die durch die /I
Compileroption angegebenen Verzeichnisse. Wenn die /I
Option nicht vorhanden ist oder ein Fehler auftritt, verwendet der Präprozessor die INCLUDE
Umgebungsvariable, um alle eingeschlossenen Dateien in winkeln Klammern zu finden. Die Umgebungsvariable INCLUDE
und /I
die Compileroption können mehrere Pfade enthalten, getrennt durch Semikolons (;
). Wenn mehrere Verzeichnisse als Teil der Option oder innerhalb der /I
INCLUDE
Umgebungsvariable angezeigt werden, durchsucht der Präprozessor sie in der Reihenfolge, in der sie angezeigt werden.
Mit dem Befehl
CL /ID:\msvc\include myprog.c
bewirkt, dass der Präprozessor das Verzeichnis D:\msvc\include\
nach eingeschlossenen Dateien wie .stdio.h
Die Befehle
SET INCLUDE=D:\msvc\include
CL myprog.c
haben dieselbe Wirkung. Wenn es bei beiden Suchvorgängen zu Fehlern kommt, tritt ein schwerwiegender Compilerfehler auf.
Wenn der Dateiname für eine Includedatei vollständig angegeben ist, die einen Pfad enthält, der einen Doppelpunkt enthält (z F:\MSVC\SPECIAL\INCL\TEST.H
. B. ), folgt der Präprozessor dem Pfad.
For include files that are specified as #include "path-spec"
, directory search begins in the directory of the parent file and then proceeds through thedirectories of any parent files. Das heißt, die Suche beginnt relativ zum Verzeichnis, das die zu verarbeitende Quelldatei enthält. Wenn keine Großelterndatei vorhanden ist und die Datei immer noch nicht gefunden wird, wird die Suche fortgesetzt, als ob der Dateiname in eckige Klammern eingeschlossen wurde.
ENDE der Microsoft-spezifischen Informationen
Siehe auch
Präprozessoranweisungen
/I
(Zusätzliche Includeverzeichnisse)