...nicht ganz. Die Linkreihenfolge ist nicht davon abhängig, wie die Funktionen aufgerufen werden, sondern eben davon, wie die Linkreihenfolge ist
Das #include macht nur einen reinen Textersatz. Es kopiert den Inhalt der angegebenen Datei in die Datei hinein, wo es steht.
Mit #define definiert man ebenso nur einen rein textuellen Ersatz. Das F_CPU wird überall, wo es steht, durch 8000000L (oder was auch immer) ersetzt.
Wenn es dann mehrere Variablen-Definitionen oder Defines gibt, wird gemeckert.
...und mach dir auch klar, was der Unterschied zwischen einer Variablen-Definition und einer Variablen-Deklaration ist!
Bei Include-Dateien sollte es eigentlich nicht auf die Reihenfolge ankommen -- wenn sie richtig gemacht sind.
Im übrigen ist eine Header-Datei keine Bibliothek im Sinne von C (wie etwa die libc oder libm), das führt oft zu Verwirrungen.
Lesezeichen