Допустим, у нас есть 2 исходных файла:
main.c:
#include <stdio.h>
#define i 2
int main(){
printf("sum(%d) = %d", i, sum(i));
return 0;
}
sum.c:
int sum(int i){
int a, sum;
for(a = 0, sum = 0; a < i; a++)
sum += a;
return sum;
}
Если я скомпилирую их, используя
gcc main.c sum.c
, я получурабочий исполняемый файл.Я запутался, потому что думал, что это не должно работать, так как функция sum
идет после main
>, нет никакого намека на функцию sum
, как ее объявление до main
.
Это из-за одного из этапов компиляции (например, редактирование ссылок)?Кроме того, это плохая практика (я должен был использовать заголовочный файл с объявлением sum
)?