Директивы #include (C/C++)
#include директива указывает, что препроцессор обрабатывает содержимое указанного файла, если эти содержимое появились в программу источника в той точке, где отображается директива.
#include "path-spec"
#include <path-spec>
Заметки
Можно организовать постоянный и определения макроса в включаемых файлов, а затем используют #include рекомендации для добавления эти определения к любому файлу источника.Включите файлы также полезен для включения объявления внешних переменных и сложных типов данных.Необходимо указать только один раз и именования типов в файле include, созданном для этой цели.
путь-спецификации имя файла при необходимости, которому предшествует спецификацией каталога.Имя файла должно иметь имя существующего файла.синтаксис путь-спецификации зависит от операционной системы, в которой программа компилированна.
Дополнительные сведения о том, как ссылаться на сборки в приложении C++ в компилированном /clrсм. в разделах #using.
Обе формы синтаксиса вызывают замену этого коррелятивны любыми содержимым включают файл.Разница между 2 формами порядок, в котором препроцессор выполняет поиск файлов заголовков, когда путь неполные определен.В следующей таблице приведены различия между 2 форм синтаксиса:
форма синтаксиса |
Действие |
---|---|
закавыченная форма |
Поиск препроцессора, включают файлы в следующем порядке:
|
форма стенного угольника |
Поиск препроцессора, включают файлы в следующем порядке:
|
Препроцессор прекратит поиск только удается найти файл с заданным именем.Если указано 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 обрабатываемый директива.Если файл деда и файл не найден, поиск продолжается, если имя файла заключен в угловые скобки.
ЭЛЕМЕНТ, относящийся Майкрософт