我确信这不是唯一的原因,但是当您只知道函数的声明(例如从头文件中)时,您可以通过调用其他函数来编译文件。这是可能的,无需重新编译函数本身的定义(可能在另一个文件中)。但是为了验证函数被正确调用,编译器必须知道它的声明。然后链接器会处理剩下的事情。
这里有一个小例子
主.c:
#include "function.h"
int main(){
function();
return 0;
}
函数.h:
#ifndef FUNCTION_H
#define FUNCTION_H
void function();
#endif
函数.c:
#include "function.h"
void function(){}
我正在使用 gcc 像这样编译:
gcc function.c -c
这将产生一个目标文件function.o。现在,当我想编译我的 main 函数时,我不必再编译我的 function.c 文件,我只需要知道头文件和目标文件中的声明:
gcc main.c function.o -o test
现在,目标文件将链接到我的程序中而无需重新编译。