Файл заголовков

Файл заголовков

Заголовочный файл (иногда головной файл, англ. header file) (или подключаемый файл) — в языках программирования Си и C++ файл, содержащий определения типов данных, структуры, прототипы функций, перечисления, макросы препроцессора. Имеет по умолчанию расширение .h; иногда для заголовочных файлов языка C++ используют расширение .hpp. Заголовочный файл используется путём включения его текста в данный файл директивой препроцессора #include.

Заголовочный файл в общем случае может содержать любые конструкции языка программирования, но на практике исполняемый код (за исключением inline функций в C++) в заголовочные файлы не помещают. Например, идентификаторы, которые должны быть объявлены более чем в одном файле, удобно описать в заголовочном файле, а затем его подключать по мере надобности.

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

Например, в языках программирования Си и C++ функции стандартной библиотеки по сложившейся традиции объявляют в заголовочных файлах. Подробнее смотрите Стандартная библиотека языка Си и Стандартная библиотека C++

Преимущества использования

В большинстве современных языков программирования, корректность функционирования программ зависит от ее собственных компонентов (подпрограмма), а эти компоненты могут распространяться ввиде файлов, компилируемых отдельно. Если подпрограмму необходимо использовать где-то еще, где она не определена, возникает необходимость в использовании предварительного объявления или прототипа функции. Например, функция определена следующим образом в одном исходном файле:

 int add(int a, int b)
 {
     return a + b;
 }

Она может быть объявлена (при помощи прототипа функции), а затем можно ссылаться на нее в другом исходном файле:

 extern int add(int, int);
 
 int triple(int x)
 {
     return add(x, add(x, x));
 }

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

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

 /* File add.h */
 #ifndef ADD_H
 #define ADD_H
 
 int add(int, int);
 
 #endif /* ADD_H */
 /* File triple.c */
 #include "add.h"
 
 int triple(int x)
 {
     return add(x, add(x, x));
 }

Это облегчает поддержку: при изменении определения должно быть обновлено лишь одно объявление (то, которое находится в заголовочном файле). К исходному файлу также можно подключать заголовочный файл, содержащий определение, используемые в исходниках. Это позволяет компилятору проверять объявление и определение на корректность.

 /* File add.c */
 #include "add.h"
 
 int add(int a, int b)
 {
     return a + b;
 }

Обычно заголовочные файлы применяются только для более чёткого определения интерфейса и обычно содержат комментарии, поясняющие способы использования компонентов, объявленных в файле. В приведенном примере использованные подпрограммы выделены в отдельные исходные файлы, которые должны компилироваться отдельно. (Исключением в языках Си и C++ являются встраиваемые функции, которые зачастую включаются в заголовочный файл из-за того, что в большинстве случаев использования не получается правильно раскрыть встраиваемую функцию без обращений к их определению во время компиляции.)

Альтернативные варианты

Заголовочные файлы - не единственное решение проблем доступа к идентификаторам, объявленным в различных файлах. У них есть недостаток, заключающийся в необходимости вносить изменния в двух местах (исходный и заголовочный файлы) каждый раз при изменении определения. Некоторые более новые языки (такие как Java) вместо заголовочных файлов используют схемы наименования, позволяющие компилятору использовать исходные файлы, связанные с интерфейсами и использованиями классов.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "Файл заголовков" в других словарях:

  • Заголовочный файл — (иногда головной файл, англ. header file), или подключаемый файл  в языках программирования файл, механически «вставляемый» компилятором в исходный текст в том месте, где располагается некоторая директива ({$I file.inc} в Паскале,… …   Википедия

  • однородный файл — Файл, не содержащий заголовков, внутренних и “хвостовых” меток. Типичным примером однородного файла является сплошной массив данных, состоящий из однотипных записей без разделительных знаков между ними. [Л.М. Невдяев.… …   Справочник технического переводчика

  • I²C — (рус. ай ту си/и два цэ)  последовательная шина данных для связи интегральных схем, разработанная фирмой Philips в начале 1980 х как простая шина внутренней связи для создания управляющей электроники. Используется для соединения… …   Википедия

  • HTTP — Название: Hypertext Transfer Protocol Уровень (по модели OSI): Прикладной Семейство: TCP/IP Создан в: 1992 г. Порт/ID: 80/TCP Спецификация …   Википедия

  • Протокол передачи гипертекста — HTTP Название: Hypertext Transfer Protocol Уровень (по модели OSI): Прикладной Семейство: TCP/IP Создан в: 1990 г. Порт/ID: 80/TCP Назначение протокола: Доступ к гипертексту, ныне стал универсальным Спецификация: RFC 1945 …   Википедия

  • Files-11 — (также известна как on disk structure (англ. на дисковая структура)  файловая система, используемая в операционной системе OpenVMS, а также в более простой форме в более старой ОС RSX 11. Это иерархическая файловая система с поддержкой… …   Википедия

  • Кодировки символов в HTML —     HTML HTML и HTML5 Динамически …   Википедия

  • Fidolook — «Fidolook»  Плагин для известного интернетовского мейл ньюсридера Outlook Express из состава пакета Microsoft Internet Explorer. Лицензия распространения  Freeware (бесплатно). Fidolook существенно расширяет такие возможности Outlook… …   Википедия

  • FITS — FITS (англ. Flexible Image Transport System  Гибкая Система Передачи Изображений)  цифровой формат файлов используемый в науке для хранения, передачи и редактирования изображений и их метаданных. Чаще всего FITS используется в …   Википедия

  • Предварительно откомпилированные заголовки — (англ. pre compiled headers)  в средах программирования на языках Си и Си++  способ ускорить компиляцию программ за счёт предварительной обработки так называемых заголовочных файлов, которые содержат интерфейсы модулей и, согласно… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»