Описание тега header-files

Заголовочные файлы используются в некоторых языках программирования для хранения исходного кода в виде единой копии, которая может быть повторно использована в нескольких исходных файлах. Этот тег следует использовать для вопросов об использовании файлов заголовков. Вместе с этим тегом следует использовать тег для языка программирования, например C, C++, PHP или Ruby, поскольку использование файла заголовка может варьироваться в зависимости от языка программирования. Этот тег обычно не используется при программировании на Java или Go и в директиве импорта.

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

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

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

Обычно специальная директива, такая как include или requireиспользуется для вставки копии содержимого файла заголовка в определенную строку исходного файла во время обработки исходного кода компилятором или обработчиком сценариев. Концепция - этоinclude или requireдиректива заменяется содержимым файла заголовка. Заголовочные файлы используются в ряде языков программирования, таких как C и C++, а также в PHP, Ruby и Lua. Семантика этих директив будет варьироваться от языка программирования к языку программирования.

В import директива, используемая в таких языках, как Java и Go, отличается от директивы include Директива C и C++ является скорее способом установления связей и ссылок между классами и пакетами как часть объединения программных компонентов (Java и Go), а не включения строк исходного кода (C, C++ и PHP).

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

Рекомендации для файлов заголовков

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

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

Некоторые языки программирования требуют осторожности, чтобы заголовочный файл не был включен более одного раза. Это может произойти, когда несколько файлов заголовков, которые включены в исходный файл, сами включают еще один файл заголовка. В языках программирования C и C++ макросы или прагмы используются для принудительного применения единого правила. В других случаях исходные строки в файле заголовка могут не требовать однократного правила из-за природы источника в файле заголовка.

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

PHP имеет require_once директива, которая будет проверять, был ли уже включен файл заголовка или нет.

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

Обычно расширение файла .hиспользуется для файлов заголовков. Однако для многих языков программирования это соглашение об именах не является требованием для правильной обработки.