C-Header-Dateien und Kompilierung / Verknüpfung
Ich weiß, dass Header - Dateien Forward - Deklarationen verschiedener Funktionen, Strukturen usw. enthalten, die in der.c
Datei, die das 'aufruft'#include
, Recht? Soweit ich weiß, geschieht die "Gewaltenteilung" folgendermaßen:
Header-Datei:func.h
enthält Vorwärtsfunktionserklärung
int func(int i);
C-Quelldatei:func.c
enthält die eigentliche Funktionsdefinition
#include "func.h"
int func(int i) {
return ++i ;
}
C-Quelldateisource.c
(das "aktuelle" Programm):
#include <stdio.h>
#include "func.h"
int main(void) {
int res = func(3);
printf("%i", res);
}
Meine Frage ist: Sehen, dass die#include
ist einfach eine Compiler-Direktive, die den Inhalt der kopiert.h
in der Datei, die#include
ist drin, wie geht das.c
Datei weiß, wie man die Funktion tatsächlich ausführt? Alles was es bekommt ist dasint func(int i);
, wie kann es also tatsächlich die Funktion ausführen? Wie erhält es Zugriff auf die eigentliche Definition vonfunc
? Enthält der Header eine Art Zeiger mit der Aufschrift "Das ist meine Definition, da drüben!"?
Wie funktioniert es?