¿Qué es el formato de archivo H?
Los archivos .h se crean al trabajar con los lenguajes C, C++ o Objective-C.
Contenido de los archivos .h
Los archivos con la extensión .h contienen declaraciones de funciones o macros, y pueden albergar datos como:
- declaraciones de variables y constantes,
- definiciones de struct, enum y tipos,
- referencias
#includea otros archivos de cabecera
En la práctica, los archivos .h se utilizan para contener declaraciones compartidas: código al que se hace referencia con frecuencia en múltiples archivos fuente .c y .cpp. Esto permite una mejor legibilidad del código fuente y eficiencia para el programador. Las funciones y macros definidas en los archivos .h los hacen reutilizables en distintos proyectos y facilitan el intercambio de código. Esto también facilita la actualización del código, ya que la interfaz se almacena en un único lugar bien conocido.
¿Cómo se utilizan los archivos .h?
Almacenar declaraciones compartidas en archivos .h hace que sean más fáciles de acceder y añadir al código fuente del proyecto. Durante la compilación, el preprocesador de C expande cada directiva #include, copiando el contenido de la cabecera en la unidad de traducción antes de que el compilador continúe. Las cabeceras del sistema como <stdio.h> o <vector> se distribuyen con el compilador y no necesitan incluirse con su proyecto; sin embargo, los archivos .h específicos del proyecto forman parte del árbol de fuentes y viajan con él. Muchos proyectos de C++ también utilizan archivos .hpp para distinguir las cabeceras exclusivas de C++ de las cabeceras .h de C puro, aunque ambos dependen del mismo mecanismo #include.
Seguridad y protección
RIESGO: LOWUna cabecera .h es código fuente en texto plano y no se ejecuta por sí sola, por lo que abrirla o leerla en un editor es seguro. La precaución real se refiere a la COMPILACIÓN, no al formato del archivo: el código de cabecera (y fuente) de un proyecto no confiable puede contener lógica maliciosa que solo se ejecuta una vez que se construye y ejecuta el programa, por lo que debe revisar y compilar código C/C++ desconocido solo en un entorno aislado/VM y de fuentes en las que confíe. No hay riesgo en simplemente visualizar el texto. (Las cabeceras también pueden incluir archivos del sistema y definir macros que cambian la forma en que se compila el código dependiente, algo relevante para desarrolladores, pero no una amenaza de seguridad por el archivo en sí).
Detalles del formato
en pocas palabras- Cabecera de Objective-C / Objective-C++ - El lenguaje Objective-C de Apple también utiliza cabeceras .h (p. ej., para declarar clases @interface), que se abren de la misma manera en Xcode o editores de texto.
- ch / diversos datos de aplicaciones - Un puñado de programas de nicho (y antiguas herramientas de datos/juegos) reutilizan .h para datos que no son código fuente; identifíquelos por el contenido del archivo, no por la extensión.
Programas que abren archivos H
Detalles técnicos
especificación profunda| Tipo de archivo | Cabecera de código fuente en texto plano |
| Tipo MIME | text/x-c |
| Firma de archivo (magic bytes) | Ninguna: texto plano, identificado por extensión y contenido |
| Constructor de apertura típico | Guarda de inclusión (`#ifndef NOMBRE_H` / `#define NOMBRE_H`) o `#pragma once` para evitar inclusiones múltiples |
| Rol del preprocesador | Expandido en línea por el preprocesador de C antes de la compilación; los archivos `.h` no se compilan directamente |
| Sintaxis de inclusión | Las cabeceras del sistema usan corchetes angulares (p. ej., `<stdio.h>`); las cabeceras del proyecto usan comillas dobles (p. ej., `"mylib.h"`) |
| Contenido típico | Declaraciones de funciones, definiciones de macros, definiciones de struct y enum, alias typedef y (en C++) declaraciones de clases |
| Extensiones relacionadas | `.c`, `.cpp`, `.hpp`, `.hxx`, `.hh`, `.cc`, `.cxx` |
| Enlace en C++ | Las cabeceras de C incluidas en código C++ a menudo se envuelven en bloques `extern "C" { }` para evitar el «name mangling» |
| Codificación de caracteres | ASCII (norma histórica); UTF-8 ampliamente aceptado por compiladores modernos para identificadores y comentarios |
| Protección contra inclusión múltiple | Las guardas de inclusión o `#pragma once` aseguran que la misma cabecera se procese solo una vez por unidad de traducción |
| Cabeceras de la librería estándar de C | Siguen la convención `<nombre.h>`, p. ej., `<stdio.h>`, `<stdlib.h>`, `<string.h>` |
| Definiciones de plantillas (C++) | Las plantillas de funciones y clases deben definirse completamente en archivos de cabecera, ya que se instancian en tiempo de compilación |
| Lanzado | 1972 (C language; #include header convention from early C) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | en.cppreference.com |
Conversiones de H
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos H.