Jump to content

Префикс заголовка

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

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

Заголовки префиксов обычно предварительно компилируются , чтобы сократить время компиляции. Использование префиксных заголовков вне этой цели может затруднить поддержку вашего кода и сделать его менее пригодным для повторного использования. [1] Заголовки префиксов также можно использовать для кроссплатформенной поддержки. В системах *NIX обычно во время сборки создается заголовочный файл config.h (через что-то вроде autoconf ), описывающий возможности системы. Однако при использовании определенных систем сборки, таких как Visual Studio или Xcode, этот файл config.h может быть недоступен. Один из способов решения этой проблемы — сделать HAVE_CONFIG_H заранее определенным макросом в системе сборки, который генерирует config.h, чтобы код знал, нужно ли #include config.h (и безопасен для использования системами сборки, которые его нет). Альтернативой может быть добавление в систему сборки config.h в качестве заголовка префикса вместо определения HAVE_CONFIG_H. Конечно, недостатком является то, что этот заголовок будет добавлен в каждую единицу компиляции, а не только в те, которые включают его явно.

В macOS система сборки Xcode автоматически генерирует заголовки префиксов для новых проектов. новый проект Cocoa Например, получает префиксный заголовок, который выглядит следующим образом:

#ifdef __OBJC__
    #import <Cocoa/Cocoa.h>
#endif

В результате явное включение вышеуказанных файлов заголовков в любой файл кода Objective-C не подразумевает второе включение из-за #import директива Objective-C или, в более общем смысле, с #include из-за использования защиты включения ; следовательно, об этих включениях можно забыть, но это рекомендуется [1] чтобы они были написаны явно, чтобы обеспечить автономность и возможность повторного использования исходного кода, а также прояснить зависимости библиотеки.

Аналогичные заголовки префиксов генерируются для других типов проектов.

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «4 способа, которыми предварительно скомпилированные заголовки ухудшают качество вашего кода» . Качественное кодирование . 28 февраля 2012 года . Проверено 17 августа 2018 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1d895816db2e25f55b77bbce1e24ef9d__1711360200
URL1:https://arc.ask3.ru/arc/aa/1d/9d/1d895816db2e25f55b77bbce1e24ef9d.html
Заголовок, (Title) документа по адресу, URL1:
Prefix header - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)