Archivos de cabecera
Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 1 de 61.
A medida que los programas en C se vuelven más grandes, mantener todo el código en un solo archivo se vuelve inmanejable. Los archivos de cabecera proporcionan una forma de organizar su código al separar qué hace una función de cómo lo hace.
Un archivo de cabecera (con la extensión .h) contiene declaraciones de función (también llamadas prototipos). Estas declaraciones le indican al compilador que una función existe y qué parámetros recibe, sin proporcionar la implementación real.
// math_utils.h
int add(int a, int b);
Para usar declaraciones de un archivo de cabecera, se incluye con la directiva #include. Para sus propias cabeceras, use comillas dobles en lugar de corchetes angulares:
// main.c
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3);
return 0;
}
La diferencia clave: #include <stdio.h> busca en los directorios del sistema, mientras que #include "math_utils.h" busca primero en la carpeta de tu proyecto. Esta separación permite que múltiples archivos compartan las mismas declaraciones de funciones, haciendo que tu base de código sea más fácil de navegar y mantener.
Hoja de referencia
Los archivos de cabecera (con extensión .h) contienen declaraciones de funciones que le indican al compilador que una función existe sin proporcionar su implementación:
// math_utils.h
int add(int a, int b);
Incluya sus propios archivos de cabecera utilizando comillas dobles:
// main.c
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
#include <stdio.h> busca en los directorios del sistema, mientras que #include "math_utils.h" busca primero en la carpeta de su proyecto.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Object Oriented Programming
1Fundamentos de programación modular
Archivos de cabeceraGuardas de inclusiónArchivos fuenteFunciones estáticasRepaso: Calculadora modular4Encapsulamiento
Concepto de punteros opacosDefinición de structs opacosGetters y SettersValidación en settersResumen: Caja secreta7Punteros a funciones
Declaración de punteros a funcionesLlamada a punteros a funcionesTypedef para punteros a funcionesPasar funciones como argumentosRepaso: Dispatch de calculadora10Contenedores genéricos
Repaso de punteros voidWrapper genéricoSwap genéricoComparación genéricaRepaso: Array genérico2Objetos y métodos
Structs como objetosEl puntero 'Self'Const CorrectnessPuntero vs. ValorMétodos auxiliaresResumen: Point Manager5Proyecto: Cuenta bancaria simple
Configuración del proyectoImplementación de la cuenta3Ciclo de vida de los objetos
Patrón ConstructorPatrón DestructorInicialización en StackCopia profundaResumen: String Wrapper6Herencia mediante composición
Incrustación de StructsLa regla del primer miembroAcceso a miembros padreUpcastingResumen: Jerarquía de formas9Proyecto: Dibujador de figuras
Descripción general del proyectoImplementación del círculo