Um das exakt zu beantworten, müsste man in dem Teil nachsehen, den du
nicht angegeben hast. Hast du einen Link, wie man an den Teil rankommt
um nachzusehen?
Das USE_ADC kann an einem von mehreren Orten definiert werden. Gängige
Orte sind analog.h, das Makefile oder die Compiler Options im AVR
Studio.
Dem Compiler ist egal wo die Funktion ADC_Init() liegt. Wenn sie nicht
in der Datei ist wo sie aufgerufen wird, fügt der Compiler bei der
Kompilierung eine Kennung ein, dass die Funktion von sonstwo
beizubringen ist.
Wenn du dem Compiler eine analog.c mit der Funktionsdefinition im
Makefile oder im AVR Studio Projekt angibst, macht er eine Objektdatei
draus.
Der Linker schaut alle ihm im Makefile oder im AVR Studio Projekt
angegebenen Objektdateien durch bis er alle Funktionen zusammengeklaubt
hat. Fehlt dann noch was, mosert der Linker.