19.- Curso C++ Básico. Los archivos Header (de Encabezado)

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 .h para los archivos Gether. Generalmente, estos se emparejan con sus correspondientes archivos .cpp.
  • Se aconseja que todos los archivos .cpp tengan un archivo emparejado .h con 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í existe iO string.h para 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 a namespace std para 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.h ahora es cstdlib dentro del espacio de nombres std.

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 jeder debe 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.
Video description

Acceso al AsistenteCPP: https://tinyurl.com/AsistenteCPP. Videotutorial Nº 19 del Curso de C++ Básico, que dedicamos a los archivos header. Usar archivos header de la librería estándar; Escribir archivos header propios; Relaciones entre archivos .h y archivos .cpp; Uso de paréntesis angulares y dobles comillas. Cambios incluidos con la estandarización ANSI de C++ Código completo del curso: https://github.com/0utKast/CursoCPPGitHub/archive/refs/heads/master.zip