C - 仅包含原型的头文件

C - Header file containing only prototypes

我正在做一些作业,基本上我们被介绍拆分我们的文件。到目前为止,我们只真正处理了一个主文件。

所以,我有三个文件 - main.c、function1.c、function2.c 和一个名为 header.h.

的头文件

根据给我们的指示,头文件将包含 function1.c 和 function2.c

中编码的实际函数的函数原型

然后我们要在每个.c 文件中包含头文件。

在 main.c 文件中,调用了 function1.c 和 function2.c 中编码的两个函数。但是,我收到一条错误消息,

main.c:(.text+0xec): undefined reference to `func1'
main.c:(.text+0x110): undefined reference to `func2'

我不太清楚为什么会这样。

我是 运行 Ubuntu 16.04 LTS

在 GCC 编译器中试试这个,

gcc main.c function1.c function2.c

这看起来像是链接器抱怨找不到这两个函数。

使用函数原型,只是告诉编译器在最终程序中链接在一起时函数的实现是可行的一种方式。 Gcc 然后将生成一个目标文件,其中包含 main 的编译代码以及程序仍然需要某些函数的地址才能执行的信息。链接器(由 gcc 调用的程序)然后将 main.c 的目标文件与您的两个函数的目标文件放在一起,并将它们的地址插入到主程序的机器代码中的正确位置。

您必须使用

编译您的程序
gcc -o main main.c function1.c function2.c

这样两个函数的实际实现将在链接时可用。