19.- Curso C++ Básico. Los archivos Header (de Encabezado)
¿Qué son los archivos de encabezado en C++?
Introducción a los archivos .h y .cpp
- En C++, además de los archivos con extensión
.cpp, también se utilizan archivos con extensión.h. Estos últimos son conocidos como archivos de encabezado o "Gether".
- Los archivos Gether permiten al compilador conocer definiciones anticipadas, como la de
STD-Cout, sin necesidad de incluir su definición completa en cada archivo fuente.
- Es fundamental recordar que en los archivos Gether solo se incluyen definiciones anticipadas para evitar violar la regla de una sola definición en C++.
Importancia y uso de los archivos Gether
- La inclusión de definiciones anticipadas en un archivo Gether permite que el compilador reconozca elementos durante la fase de compilación, facilitando el proceso.
- Al crear un archivo Gether, se pueden agrupar múltiples definiciones anticipadas, lo que simplifica su uso en otros programas mediante una única directiva
#include.
Creación y estructura de un archivo Gether
- Los archivos Gether constan de dos partes: el "header guard" (protector del encabezado) y el contenido real con las definiciones anticipadas.
- Para agregar un archivo Gether a un proyecto existente, se debe hacer clic derecho para añadir un nuevo elemento y seleccionar "archivo de encabezado punto H".
Buenas prácticas al usar archivos .h
- Aunque no es obligatorio, es recomendable utilizar la extensión
.hpara los archivos Gether. Generalmente, estos se emparejan con sus correspondientes archivos.cpp.
- Se aconseja que todos los archivos
.cpptengan un archivo emparejado.hcon el mismo nombre base para mantener la organización del código.
Inclusión y acceso a las definiciones
- Para acceder a las funciones declaradas en un archivo
sumar.h, es necesario incluirlo correctamente usando#include "sumar.h"entre comillas dobles.
¿Cómo gestionar archivos de encabezado en C++?
Uso de archivos de encabezado
- El proyecto se ejecuta correctamente con la inclusión del archivo
jeder. Se utilizan paréntesis angulares para bibliotecas estándar y comillas dobles para archivos propios, lo que indica al compilador dónde buscar.
- Los paréntesis angulares indican que el archivo es un encabezado externo, mientras que las comillas dobles indican que es un archivo creado por el usuario. Esto afecta cómo el compilador busca los archivos.
- En las propiedades de directorios de WC++, se pueden ver los directorios donde se buscan los archivos
jeder. Si se usa paréntesis angulares, el compilador sabe que no es un archivo propio.
Extensiones y compatibilidad
- Muchos archivos de la biblioteca estándar no tienen extensión
.h, aunque sí existeiO string.hpara códigos heredados. Esto se debe a cambios en la estructura del lenguaje C++.
- Originalmente, todos los archivos estándar terminaban en
.h, pero con la evolución del lenguaje, se decidió mover funcionalidades anamespace stdpara evitar conflictos de nombres.
- Para mantener compatibilidad con programas antiguos que usaban extensiones
.h, se crearon nuevos encabezados sin esta extensión pero manteniendo las mismas funcionalidades.
Mejores prácticas al trabajar con archivos jeder
- Los nuevos encabezados deben incluirse usando
#include <nombre>sin sufijo.h, permitiendo así una transición suave desde versiones anteriores.
- Las librerías heredadas en C también fueron adaptadas; por ejemplo,
stdlib.hahora escstdlibdentro del espacio de nombresstd.
Recomendaciones finales
- Incluir siempre guardas o protectores de encabezados en cada archivo. Este será el tema del próximo tutorial.
- No incluir definiciones completas en archivos
jeder; solo anticipaciones. Las constantes globales son una excepción a esta regla.
- Cada archivo
jederdebe tener el mismo nombre que su correspondiente fuente (ejemplo: sumar.cpp y sumar.h).
- El contenido debe ser modular e independiente, centrado en tareas específicas para facilitar futuras migraciones y mantenimiento.