Nehmen wir an, wir haben 2 Quelldateien:
main.c:
#include <stdio.h>
#define i 2
int main(){
printf("sum(%d) = %d", i, sum(i));
return 0;
}
Summe.c:
int sum(int i){
int a, sum;
for(a = 0, sum = 0; a < i; a++)
sum += a;
return sum;
}
Wenn ich sie kompiliere mit
gcc main.c sum.c
Ich werde eine funktionierende ausführbare Datei erhalten. Ich bin verwirrt, weil ich dachte, dies sollte nicht funktionieren, da die sum
Funktion kommt nach main
> Es gibt keinen Hinweis auf die sum
Funktion, wie in der Erklärung zuvor main
.
Liegt das an einem der Kompilierungsschritte (z. B. Link-Editing)? Ist dies auch eine schlechte Praxis (hätte ich eine Header-Datei mit sum
Erklärung)?