Только заголовок - Википедия - Header-only
Эта статья нужны дополнительные цитаты для проверка.Январь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В контексте C или же C ++ языки программирования, библиотека называется только заголовок если полные определения всех макросы, функции и классы составляющие библиотеку видны компилятор в заголовочный файл форма.[1] Библиотеки только для заголовков не должны быть отдельно составлен, упакованы и установлены для использования. Все, что требуется, - это указать компилятору на расположение заголовков, а затем #включают файлы заголовков в источник приложения. Еще одно преимущество состоит в том, что оптимизатор компилятора может выполнять гораздо лучшую работу, когда доступен весь исходный код библиотеки.
К недостаткам можно отнести:
- хрупкость - большинство изменений в библиотеке потребуют перекомпиляции всех единицы компиляции используя эту библиотеку
- более длительное время компиляции - блок компиляции должен видеть реализацию всех компонентов во включенных файлах, а не только их интерфейсы
- раздувание кода (это может быть оспорено) - необходимое использование в соответствии операторы в неклассовых функциях могут привести к раздуванию кода из-за чрезмерного встраивания.
Тем не менее, форма только для заголовка популярна, потому что позволяет избежать (часто гораздо более серьезной) проблемы упаковки.
Для шаблонов C ++ включение определений в заголовок - единственный способ компиляции, поскольку компилятору необходимо знать полное определение шаблонов для создания экземпляра.
Рекомендации
- ^ Уилсон, Мэтью (2004). Несовершенный C ++. Эддисон-Уэсли. п. 177. ISBN 0-321-22877-4.