En el contexto de los lenguajes de programación C o C ++ , una biblioteca se denomina solo encabezado si las definiciones completas de todas las macros , funciones y clases que componen la biblioteca son visibles para el compilador en un formato de archivo de encabezado . [1] Las bibliotecas de solo encabezado no necesitan compilarse , empaquetarse e instalarse por separado para poder usarse. Todo lo que se requiere es apuntar el compilador a la ubicación de los encabezados, y luego #incluirlos archivos de encabezado en la fuente de la aplicación. Otra ventaja es que el optimizador del compilador puede hacer un trabajo mucho mejor cuando todo el código fuente de la biblioteca está disponible.
Las desventajas incluyen:
- fragilidad: la mayoría de los cambios en la biblioteca requerirán la recompilación de todas las unidades de compilación utilizando esa biblioteca
- tiempos de compilación más largos: la unidad de compilación debe ver la implementación de todos los componentes en los archivos incluidos, en lugar de solo sus interfaces
- Machine code-bloat (esto puede ser discutido): el uso necesario de declaraciones en línea en funciones que no son de clase puede llevar a un exceso de código al sobreinlinear.
No obstante, la forma de solo encabezado es popular porque evita el problema (a menudo mucho más serio) del empaquetado.
Para las plantillas de C ++, incluir las definiciones en el encabezado es la única forma de compilar, ya que el compilador necesita conocer la definición completa de las plantillas para poder crear una instancia.