Префикс заголовка
Эта статья нуждается в дополнительных цитатах для проверки . ( август 2018 г. ) |
В компьютерном программировании префиксный заголовок — это функция, присутствующая в некоторых 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] чтобы они были написаны явно, чтобы обеспечить автономность и возможность повторного использования исходного кода, а также прояснить зависимости библиотеки.
Аналогичные заголовки префиксов генерируются для других типов проектов.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б «4 способа, которыми предварительно скомпилированные заголовки ухудшают качество вашего кода» . Качественное кодирование . 28 февраля 2012 года . Проверено 17 августа 2018 г.