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.