假设我们有两个源文件:
#include <stdio.h>
#define i 2
int main(){
printf("sum(%d) = %d", i, sum(i));
return 0;
}
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
声明的头文件)?