Archivos de encabezado: los archivos que le indican al compilador cómo llamar a alguna funcionalidad (sin saber cómo funciona realmente la funcionalidad) se denominan archivos de encabezado. Contienen los prototipos de funciones. También contienen tipos de datos y constantes que se utilizan con las bibliotecas. Usamos #include para usar estos archivos de encabezado en los programas. Estos archivos terminan con la extensión .h .
Biblioteca: la biblioteca es el lugar donde se implementa la funcionalidad real, es decir, contienen el cuerpo de la función. Las bibliotecas tienen principalmente dos categorías:
- Estático
- Compartido o Dinámico
Estático: las bibliotecas estáticas contienen código de objeto vinculado con una aplicación de usuario final y luego se convierten en parte del ejecutable. Estas bibliotecas se usan específicamente en tiempo de compilación, lo que significa que la biblioteca debe estar presente en la ubicación correcta cuando el usuario desea compilar su programa C o C++. En Windows terminan con extensión .lib y con .a para MacOS.
Compartido o dinámico: estas bibliotecas solo se requieren en tiempo de ejecución, es decir, el usuario puede compilar su código sin usar estas bibliotecas. En resumen, estas bibliotecas se vinculan en tiempo de compilación para resolver referencias indefinidas y luego se distribuyen a la aplicación para que la aplicación pueda cargarlas en tiempo de ejecución. Por ejemplo, cuando abrimos nuestras carpetas de juegos podemos encontrar muchos archivos .dll (bibliotecas de enlaces dinámicos). Como estas bibliotecas pueden ser compartidas por varios programas, también se denominan bibliotecas compartidas. Estos archivos terminan con extensiones .dll o .lib . En Windows terminan con la extensión .dll.
Ejemplo: Math.h es un archivo de encabezado que incluye el prototipo para llamadas a funciones como sqrt(), pow(), etc., mientras que libm.lib , libmmd.lib , libmmd.dll son algunas de las bibliotecas matemáticas. En términos simples, un archivo de encabezado es como una tarjeta de visita y las bibliotecas son como una persona real, por lo que usamos la tarjeta de visita (archivo de encabezado) para llegar a la persona real (biblioteca).
Veamos la diferencia entre estos dos en forma tabular, para que pueda ser fácilmente comparable:
Archivos de encabezado |
Archivos de biblioteca |
---|---|
Tienen la extensión .h | Tienen la extensión .lib |
Contienen declaraciones de funciones e incluso macros. | Contienen definiciones de funciones. |
Están disponibles dentro de «incluir subdirectorio», que a su vez está en el compilador Turbo. | Están disponibles dentro del «subdirectorio lib», que a su vez está en el compilador Turbo. |
Los archivos de encabezado son legibles por humanos. Ya que están en forma de código fuente. | Los archivos de la biblioteca no son legibles por humanos. Ya que están en forma de código de máquina. |
Los archivos de encabezado en nuestro programa se incluyen usando un comando #include que es manejado internamente por el preprocesador. | Los archivos de la biblioteca en nuestro programa se incluyen en la última etapa mediante un software especial llamado enlazador. |