c - 函数的预先声明

我确信这不是唯一的原因,但是当您只知道函数的声明(例如从头文件中)时,您可以通过调用其他函数来编译文件。这是可能的,无需重新编译函数本身的定义(可能在另一个文件中)。但是为了验证函数被正确调用,编译器必须知道它的声明。然后链接器会处理剩下的事情。

这里有一个小例子

主.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

现在,目标文件将链接到我的程序中而无需重新编译。