Woher weiß der Linker, wo die Definition einer externen Funktion ist?

Ich habe ein paar Posts gelesen und bin zu dem Schluss gekommen, dass extern dem Compiler mitteilt, dass "diese Funktion existiert, der Code dafür aber woanders ist. Keine Panik." Aber woher weiß der Linker, wo die Funktion definiert ist.

Mein FALL: - Ich arbeite an Keil uvision 4. Es gibt eine Header-Datei grlib.h und die Hauptfunktion befindet sich in grlib_demo.c (sie enthält grlib.h). Jetzt gibt es eine Funktion GrCircleDraw (), die in Circle.c definiert und in grlib_demo.c aufgerufen wird. Es gibt auch eine Anweisung

extern void GrCircleDraw (alle Argumente);

in grlib.h. Meine Frage ist, wie Linker weiß, wo die Definition von GrCircleDraw () ist, da Circle.c nicht in grlib.h und grlib_demo.c enthalten ist

Hinweis: - Die Dateien grlib.h und Circle.c befinden sich im selben Ordner. Der Code wird erfolgreich ausgeführt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage