В контексте языков программирования C или C++ библиотека называется header-only, если полные определения всех макросов , функций и классов, составляющих библиотеку, видны компилятору в виде заголовочного файла . [1] Для использования библиотеки header-only не требуется отдельной компиляции , упаковки и установки. Все, что требуется, — указать компилятору местоположение заголовков, а затем #include заголовочные файлы в исходный код приложения. Еще одним преимуществом является то, что оптимизатор компилятора может выполнять работу гораздо лучше, когда доступен весь исходный код библиотеки.
К недостаткам можно отнести:
Тем не менее, форма, состоящая только из заголовка, популярна, поскольку она позволяет избежать (часто гораздо более серьезной) проблемы упаковки.
Для шаблонов C++ включение определений в заголовок является единственным способом компиляции, поскольку компилятору необходимо знать полное определение шаблонов для создания экземпляра.