En el contexto de los lenguajes de programación C o C++ , una biblioteca se denomina de solo encabezado si las definiciones completas de todas las macros , funciones y clases que componen la biblioteca son visibles para el compilador en forma 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 señalar al compilador la ubicación de los encabezados y luego incluir los archivos de encabezado en el código 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 que utilizan 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,
- Inflación del código de máquina (podría decirse): el uso necesario de declaraciones en línea en funciones que no son de clase puede provocar una hinchazón del código debido a una inserción excesiva,
- más difícil de entender ya que el encabezado contiene tanto la interfaz como la implementación, mientras que la biblioteca tradicional separa ambas.
Sin embargo, el formato que incluye solo el encabezado es popular porque evita el problema (a menudo mucho más grave) 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 instancias.
Referencias
- ^ Wilson, Matthew (2004). Imperfect C++ . Addison-Wesley. pág. 177. ISBN 0-321-22877-4.