Archivos de cabecera C y compilación / enlace
Sé que los archivos de encabezado tienen declaraciones hacia adelante de varias funciones, estructuras, etc. que se utilizan en el.c
archivo que 'llama' al#include
, ¿derecho? Por lo que yo entiendo, la "separación de poderes" ocurre así:
Archivo de cabecera:func.h
Contiene la declaración de la función.
int func(int i);
Archivo fuente C:func.c
contiene la definición real de la función
#include "func.h"
int func(int i) {
return ++i ;
}
Archivo fuente Csource.c
(el programa "actual"):
#include <stdio.h>
#include "func.h"
int main(void) {
int res = func(3);
printf("%i", res);
}
Mi pregunta es: viendo que la#include
es simplemente una directiva de compilación que copia los contenidos de la.h
en el archivo que#include
está en, ¿cómo funciona el.c
¿Sabes cómo ejecutar realmente la función? Todo lo que está recibiendo es elint func(int i);
, entonces, ¿cómo puede realmente realizar la función? ¿Cómo obtiene acceso a la definición real defunc
? ¿El encabezado incluye algún tipo de "puntero" que dice "¡esa es mi definición, allá!"?
¿Como funciona?