Как компоновщик узнает, где находится определение внешней функции?

Я прочитал несколько постов и пришел к выводу, что extern сообщает компилятору: «Эта функция существует, но код для нее где-то еще. Не паникуйте». Но как компоновщик узнает, где определена функция.

Мой случай: - Я работаю над Keil uvision 4. Существует заголовочный файл grlib.h, а основная функция находится в grlib_demo.c (он включает grlib.h). Теперь есть функция GrCircleDraw (), которая определена в Circle.c и вызвана в grlib_demo.c, также есть оператор

extern void GrCircleDraw (все аргументы);

в grlib.h. Мой запрос заключается в том, как компоновщик знает, где находится определение GrCircleDraw (), поскольку Circle.c не включен в grlib.h и grlib_demo.c

Примечание: - файлы grlib.h и Circle.c находятся в одной папке. Код работает успешно.

Ответы на вопрос(4)

Ваш ответ на вопрос