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?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage