Директивы #include (C/C++)

#include директива указывает, что препроцессор обрабатывает содержимое указанного файла, если эти содержимое появились в программу источника в той точке, где отображается директива.

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

Заметки

Можно организовать постоянный и определения макроса в включаемых файлов, а затем используют #include рекомендации для добавления эти определения к любому файлу источника.Включите файлы также полезен для включения объявления внешних переменных и сложных типов данных.Необходимо указать только один раз и именования типов в файле include, созданном для этой цели.

путь-спецификации имя файла при необходимости, которому предшествует спецификацией каталога.Имя файла должно иметь имя существующего файла.синтаксис путь-спецификации зависит от операционной системы, в которой программа компилированна.

Дополнительные сведения о том, как ссылаться на сборки в приложении C++ в компилированном /clrсм. в разделах #using.

Обе формы синтаксиса вызывают замену этого коррелятивны любыми содержимым включают файл.Разница между 2 формами порядок, в котором препроцессор выполняет поиск файлов заголовков, когда путь неполные определен.В следующей таблице приведены различия между 2 форм синтаксиса:

форма синтаксиса

Действие

закавыченная форма

Поиск препроцессора, включают файлы в следующем порядке:

  1. В том же каталоге, что и файл, содержащий #include выписка.

  2. В каталогах ранее открытых всех включаемых файлов в обратном порядке, в котором они были открываются.Поиск начинается от каталога включаемого файла, который был открыт в последний раз, затем продолжает через каталог включаемого файла, который был открыт в первую очередь.

  3. Вдоль пути конкретного каждым параметром компилятора /I.

  4. Вдоль путей, указанных в переменной среды INCLUDE.

форма стенного угольника

Поиск препроцессора, включают файлы в следующем порядке:

  1. Вдоль пути конкретного каждым параметром компилятора /I.

  2. При компилировании в командной строке вдоль путей, указанных в переменной среды INCLUDE.

Препроцессор прекратит поиск только удается найти файл с заданным именем.Если указано full, точно, представленную спецификацию пути для файла включения между двойными кавычками (««препроцессора), поиск только которым спецификация пути и игнорирует стандартные каталоги.

Если имя файла заключенное в двойные кавычки, неполная спецификацию пути, то определений сначала ищет «родительский» каталог файлов.родительский файл содержать файла #include директива.Например, если указать файл file2 в файл file1" file1 родительский файл.

Включите файлы могут быть вложены»; « то есть #include директива может появляться в файл с именем другими #include директива.например, file2выберите выше удалось включить file3.В этом случае file1 по-прежнему был родительским file2 но был «дедом» file3.

Когда включаемые файлы являются вложенными и при компилировании из командной строки поиска каталога начинается с каталогами родительского файла, а затем продолжает в каталогах всех файлов деда.Таким образом, поиск начинается задается относительно каталога, содержащие обрабатываемый в данный момент источника.Если файл не найден, поиск перемещает к каталогам указанным параметром компилятора /I.Наконец, будет производиться поиск в каталогах, указанных в переменной среды INCLUDE.

Из интегрированной среды разработки, переменная среды INCLUDE не учитывается.Чтобы установить каталоги поискано для включаемых файлов (эти сведения также применяется к переменной среды LIB.), см. раздел Каталоги VC++, проекты, диалоговое окно " параметры ".

В следующем примере показано включение файлов с помощью угловые скобки:

#include <stdio.h>

Этот пример добавляет содержимое файла с именем STDIO.H к программе источника.Угловые скобки вызывают препроцессор поиск в каталогах, указанных в переменной среды INCLUDE для STDIO.H, выберите найти каталоги, заданные параметром компилятора /I.

В следующем примере показано включение файлов с помощью закавыченную форму:

#include "defs.h"

Этот пример добавляет содержимое файла, указанного DEFS.H к программе источника.Двойные кавычки означают, что препроцессор ищет каталог, содержащий родительский файл источника.

Вложение включаемых файлов может продолжаться до 10 уровней.Как только вложенными, которое #include рассматривает, препроцессор продолжить ввод наиболее узкую включите файл в исходном исходный файл.

Только для систем Microsoft

Чтобы найти includable исходные файлы, препроцессор первое выполняет поиск в каталогах, указанных параметром компилятора /I.Если параметр /I не присутствующ или завершилась ошибкой препроцессор использует переменную среды INCLUDE, чтобы найти любые включает файлы в угловые скобки.Переменная среды INCLUDE и параметр компилятора /I могут содержать несколько разделенных точкой с запятой (path**;**).Если более чем один каталог появляется как часть параметра /I или в переменной среды INCLUDE, препроцессор ищет их в порядке их расположения.

например, команда

CL /ID:\MSVC\INCLUDE MYPROG.C

вызывает препроцессор каталог D:\MSVC\INCLUDE для поиска включаемых файлов, как STDIO.H.команды

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

имеют один и тот же эффект.Если оба набора поиска завершаются ошибкой, то неустранимая ошибка компилятора создана.

Если имя файла указано полностью, включаемого файла с путем, который содержит двоеточие (например, F:\MSVC\SPECIAL\INCL\TEST.H), препроцессор, за которым следует путь.

Для включаемых файлов, определенные как #include «путь-спецификации«поиск каталогов, начинается с каталогом родительского файла, а затем продолжает в каталогах всех файлов деда.Таким образом, начинается поиск по отношению к каталогу, содержащее содержать исходного файла #include обрабатываемый директива.Если файл деда и файл не найден, поиск продолжается, если имя файла заключен в угловые скобки.

ЭЛЕМЕНТ, относящийся Майкрософт

См. также

Ссылки

Директивы препроцессора