Skąd linker wie, gdzie jest definicja funkcji extern?

Przeczytałem kilka postów i doszedłem do wniosku, że extern mówi kompilatorowi, że „Ta funkcja istnieje, ale kod jej jest gdzieś indziej. Nie panikuj”. Ale skąd linker wie, gdzie funkcja jest zdefiniowana.

Moja PRZYPADEK: - Pracuję nad Keil uvision 4. Jest plik nagłówkowy grlib.h, a główna funkcja jest w grlib_demo.c (zawiera grlib.h). Teraz istnieje funkcja GrCircleDraw (), która jest zdefiniowana w Circle.c i wywołana w grlib_demo.c, istnieje również instrukcja

extern void GrCircleDraw (wszystkie argumenty);

w grlib.h. Moje zapytanie brzmi, w jaki sposób linker wie, gdzie jest definicja GrCircleDraw (), ponieważ Circle.c nie jest uwzględniony w grlib.h i grlib_demo.c

Uwaga: - Pliki grlib.h i Circle.c znajdują się w tym samym folderze. Kod działa pomyślnie.

questionAnswers(4)

yourAnswerToTheQuestion