Udostępnij za pośrednictwem


#include — dyrektywa (C/C++)

Nakazuje preprocesorowi traktować zawartość określonego pliku, tak jakby ta pojawiła się ona w programie źródłowym w punkcie, gdzie pojawia się dyrektywa.

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

Uwagi

Możesz zorganizować definicje stałych i makr w plikach dołączonych, a następnie użyć dyrektyw #include, aby dodać je do pliku źródłowego.Pliki dołączane są także przydatne przy dołączaniu deklaracje zmiennych zewnętrznych i złożonych typów danych.Typy te mogą być zdefiniowane i nazwane tylko raz za pomocą stworzonego w tym celu pliku nagłówkowego.

path-spec to nazwa pliku, która opcjonalnie może być poprzedzona przez specyfikację katalogu.Nazwa pliku musi odnosić się do istniejącego pliku.Składnia path-spec zależy od systemu operacyjnego, w którym program jest skompilowany.

Aby uzyskać informacje dotyczące zestawów odwołań w aplikacjach C++ skompilowanych przez użycie /clr, zobacz #using.

Obie formy składni powodują zastąpienie tej dyrektywy przez całą zawartość określonego dołączanego pliku.Różnica między dwoma formularzami tkwi w kolejności, w której preprocesor szuka plików nagłówkowych, jeśli ścieżka nie jest całkowicie określona.W poniższej tabeli przedstawiono różnice między dwoma formami składni.

Forma składni

Akcja

Cytowany formularz

Preprocesor wyszukuje pliki dołączane w takiej kolejności:

  1. W tym samym katalogu co plik, który zawiera instrukcję #include.

  2. Do wszelkich aktualnie otwartych katalogów dołącz pliki w odwrotnej kolejności niż kolejność, w jakiej zostały otwarte.Wyszukiwanie rozpoczyna się w katalogu dołączonego pliku nadrzędnego i jest kontynuowane w górę przez katalogi dołączonych plików stojących wyżej ponad plikami nadrzędnymi.

  3. Na ścieżce określonej przez każdą opcję kompilatora.

  4. Wzdłuż ścieżek określonych przez zmienną środowiskową INCLUDE.

Formularz nawias kątowy

Preprocesor wyszukuje pliki dołączane w takiej kolejności:

  1. Na ścieżce określonej przez każdą opcję kompilatora.

  2. Podczas kompilacji wykonywanej za pomocą wiersza polecenia, wzdłuż ścieżek, które są określone przez zmienną środowiska INCLUDE.

Preprocesor przestaje wyszukiwać po odnalezieniu pliku o danej nazwie.Jeśli uwzględnisz pełną, jednoznaczną specyfikację ścieżki do dołączanego pliku między znakami podwójnego cudzysłowu (" "), preprocesor przeszukuje tylko tę specyfikację ścieżki i ignoruje katalogi standardowe.

Jeśli nazwa pliku ujęta w znaki podwójnego cudzysłowu jest niekompletnym opisem ścieżki, preprocesor najpierw przeszukuje katalog „rodzicielski”.Plik jest plikiem nadrzędnym zawierającym dyrektywę #include.Jeśli na przykład uwzględnisz plik o nazwie file2 w pliku o nazwie file1, file1 jest plikiem nadrzędnym.

Pliki dołączane mogą być „zagnieżdżone”; oznacza to, że dyrektywa #include może pojawić się w pliku nazwanym przez inną dyrektywę #include.Na przykład obiekt file2 może zawierać obiekt file3.W tym przypadku file1 nadal będzie nadrzędny wobec file2, ale będzie „ponadnadrzędny” wobec file3.

Kiedy pliki dołączone są gnieżdżone i kompilowanie za pomocą wiersza polecenia, wyszukiwanie katalogów rozpoczyna się od katalogów pliku nadrzędnego, a następnie przechodzi przez katalogi plików im nadrzędnych.Tym samym wyszukiwanie rozpoczyna się względem katalogu zawierającego źródło obecnie przetwarzane.Jeśli plik nie zostanie znaleziony, wyszukiwanie przenosi się do katalogów określonych przez kompilator /I.Poza tym przeszukiwane są katalogi, które zostały określone przez zmienną środowiskową INCLUDE.

W środowisku programistycznym zmienna środowiskowa INCLUDE jest ignorowana.Aby uzyskać informacje o ustawianiu katalogów przeszukiwanych w poszukiwaniu plików dołączanych (ta informacja dotyczy również zmiennej środowiska LIB), zobacz VC++ Directories, Projects, Options Dialog Box.

Włączenie pliku przy użyciu nawiasów można znaleźć w tym przykładzie:

#include <stdio.h>

Ten przykład dodaje zawartość pliku o nazwie STDIO.H do programu źródłowego.Nawiasy kątowe sprawiają, że preprocesor przeszukuje katalogi określone przez zmienną środowiskową INCLUDE dla STDIO.H po zakończeniu wyszukiwania katalogów określonych przez opcję kompilatora /I.

Następny przykład pokazuje włączenie pliku przy użyciu formy z cytatami:

#include "defs.h"

Ten przykład dodaje zawartość pliku, który jest określony przez DEFS, do programu źródłowego.Podwójny cudzysłów oznacza, że preprocesor najpierw przeszukuje katalog zawierający nadrzędny plik źródłowy.

Zagnieżdżanie plików dołączanych można kontynuować do 10 poziomów.Po przetworzeniu zagnieżdżonego #include, preprocesor w dalszym ciągu wstawia plik załączany do oryginalnego pliku źródłowego.

Specyficzne dla firmy Microsoft

Aby zlokalizować pliki źródłowe do zawarcia, preprocesor najpierw przeszukuje katalogi, które są określone przez opcję kompilatora /I.Jeśli opcja /I nie istnieje lub nie powiedzie się, preprocesor wykorzysta zmienną środowiskową INCLUDE, aby znaleźć wszystkie pliki dołączane w nawiasach kątowych.Zmienna środowiskowa INCLUDE i opcja kompilatora /I kompilator mogą zawierać wiele ścieżek oddzielonych średnikami (;).Jeżeli więcej niż jeden katalog pojawia się jako część opcji /I lub w ramach zmiennej środowiskowej INCLUDE, preprocesor przeszukuje je w kolejności, w jakiej są wyświetlane.

Na przykład polecenie

CL /ID:\MSVC\INCLUDE MYPROG.C

powoduje, że preprocesor wyszukuje w katalogu D:\MSVC\INCLUDE\ pliki dołączane, takie jak STDIO.H.Polecenia

SET INCLUDE=D:\MSVC\INCLUDE
CL MYPROG.C

mają ten sam efekt.Jeśli oba zestawy wyszukiwań nie powiodą się, zostanie wygenerowany błąd krytyczny kompilatora.

Jeśli nazwa pliku jest w pełni określona dla pliku dołączanego ze ścieżką, która zawiera dwukropek (na przykład F:\MSVC\SPECIAL\INCL\TEST.H), preprocesor postępuje zgodnie ze ścieżką.

W przypadku plików dołączanych określonych jako #include "path-spec", wyszukiwanie w katalogu rozpoczyna się od katalogu nadrzędnego pliku, a następnie przechodzi przez katalogi plików nadrzędnych wobec niego.Tym samym wyszukiwanie rozpoczyna się względem katalogu zawierającego plik źródłowy zawierający dyrektywę #include, która jest przetwarzana.Jeśli plik pokolenia nie istnieje i nie znaleziono pliku, wyszukiwanie jest kontynuowane tak, jakby nazwa pliku została ujęta w nawiasy ostre.

KONIEC informacji specyficznych dla firmy Microsoft

Zobacz też

Informacje

Dyrektywy preprocesora