Включение файлов

Включение файлов

Синтаксис:

#include "имя пути"

#include <имя пути>

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

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

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

Препроцессор использует понятие стандартных директорий для поиска включаемых файлов. Стандартные директории задаются командой PATH операционной системы.

Препроцессор ведет поиск до тех пор, пока не обнаружит файл с заданным именем.

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

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

Директива #include может быть вложенной. Это значит, что она может встретиться в файле, включенном другой директивой #include. Когда препроцессор обнаруживает вложенную директиву #include, он начинает поиск файла в текущей директории, соответствующей исходному файлу, который содержит эту вложенную директиву #include. После этого препроцессор переходит к поиску в текущей директории, соответствующей охватывающему исходному файлу, т.е. тому, по отношению к которому данная директива #include является вложенной. Допустимый уровень вложенности директив #include зависит от реализации компилятора. Процесс поиска в охватывающих директориях продолжается до тех пор, пока не будет просмотрена текущая директория самого первого исходного файла, т. е. файла, имя которого было задано при вызове компилятора языка Си.

Затем препроцессор продолжает поиск в директориях, указанных в командной строке компиляции, и, наконец, ищет в стандартных директориях.

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

Примеры:

#include <stdio.h> /* пример 1 */

#include "defs.h" /* пример 2 */

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

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

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

Примеры:

#define myinclude "c: cincludemystuff.h"

#include myinclude

#include "myinclude.h"

Первая директива #include заставит препроцессор просматривать директорию C:TCINCLUDEMYSTUFF.H, а вторая заставит искать файл MYINCLUDE.H в текущей директории.

Объединение символьных строк и склейку лексем в именованной константе, которая используется в директиве #include, использовать нельзя. Результат расширения константы должен сразу читаться как корректная директива #include.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Включение информации NetBIOS

Из книги автора

Включение информации NetBIOS Система NetBIOS, являющаяся основой для протоколов SMB/CIFS, использует для решения стоящих перед ней задач набор структур и инструментов, действующих на базе протоколов TCP/IP. (Подробно протоколы SMB/CIFS, будут рассматриваться в главе 7.) Сервер DHCP можно


17.2.4. Включение IP Forwarding

Из книги автора

17.2.4. Включение IP Forwarding Разрешение пересылки IP устанавливается в файле /etc/sysconfig/network примерно так: FORWARD_IPV4=yes. При этом ваше ядро должно быть скомпилировано для поддержки IP_FORWARD.Для включения IP Forwarding введите команду:# echo "1" > /proc/net/ip_forwardВ некоторых дистрибутивах IP Forwarding


5.5.4. Включение Compiz

Из книги автора

5.5.4. Включение Compiz После установки пакетов выберите команду меню Система> Параметры>Оформление>Эффекты рабочего стопа (см. рис. 5.34). Щелкните на кнопке Включить эффекты. Эффекты будут включены - вы сразу это увидите по эффекту прозрачности окон. Конфигуратор спросит


Включение

Из книги автора

Включение Не все классы способны к агрегированию. Для того чтобы выставить неагрегируемые классы как часть индивидуальности другого объекта, необходимо, чтобы внешние объекты явно передавали вызовы методов внутренним объектам. Эта технология СОМ часто называется


Включение отображения

Из книги автора

Включение отображения В этот момент обработчик событий Tick должен отобразить в панели toolStripStatusLabelClock текущее время, если значением по умолчанию члена-переменной DateTimeFormat является DateTimeFormat.ShowClock. Чтобы позволить пользователю переключаться между отображением даты и времени,


Включение файла

Из книги автора

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


Включение библиотеки

Из книги автора

Включение библиотеки      На некотором этапе компиляции или загрузки программы вы можете выбрать библиотеку. В нашей системе, например, есть файл lc.lib, содержащий скомпилированную версию библиотечных функций, и мы предлагаем редактору связей IBM PC использовать эту


Включение файлов

Из книги автора

Включение файлов Синтаксис:#include "имя пути"#include <имя пути>Директива #include включает содержимое исходного файла, <имя пути> которого задано, в текущий компилируемый исходный файл. Например, общие для нескольких исходных файлов определения именованных констант и


Включение mental ray

Из книги автора

Включение mental ray Работа с визуализатором mental ray начинается еще на этапе текстурирования. Первый этап — моделирование — выполняется одинаково, независимо от того, каким визуализатором будет создавать конечный продукт. Уже на втором этапе — текстурировании — необходимо


Включение преобразований

Из книги автора

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


11.2 Включение Файлов

Из книги автора

11.2 Включение Файлов Командная строка компилятора вида#include «имя_файла»вызывает замену этой строки полным содержимым файла имя_ файла. Сначала именованный файл ищется в директории первончального исходного файла, а затем в стандартных или заданных местах. Альтернативный


Включение поддержки ZFS

Из книги автора

Включение поддержки ZFS Для практического использования ZFS on Linux перво-наперво необходимо обеспечить её поддержку в вашем дистрибутиве – ибо по причинам, описанным в предыдущей статье, сама собой она не поддержится ни в одном Linux’е.Как это сделать, зависит от дистрибутива.


2.4.4. Включение загрузки с DVD

Из книги автора

2.4.4. Включение загрузки с DVD Чтобы загрузиться с установочного диска Windows, нужно изменить порядок загрузки в BIOS Setup (чтобы система загружалась с DVD, а не с жесткого диска). В случае со стационарным компьютером для входа в BIOS Setup обычно достаточно нажать клавишу <Del> сразу,


Первое включение

Из книги автора

Первое включение Заветная кнопка находится всегда на передней панели системного блока. Она – самая крупная на этой панели, не ошибетесь.Наберите воздуха, почувствуйте торжественность момента… Пора! Жмите и смотрите на монитор!Ничего не видите? Не пугайтесь, так часто


Включение и загрузка компьютера

Из книги автора

Включение и загрузка компьютера Чтобы лучше ориентироваться в настройке компьютера в процессе его работы, необходимо разобраться, что происходит при загрузке компьютера, как взаимодействуют друг с другом его комплектующие, а также какую роль играет BIOS.ПРИМЕЧАНИЕ.BIOS –