C-仅包含原型的头文件

C-仅包含原型的头文件,c,undefined-reference,C,Undefined Reference,我正在处理一些任务,基本上我们是被介绍来分割我们的文件的。到目前为止,我们只处理了一个主文件 所以,我有三个文件——main.c、function1.c、function2.c和一个名为header.h的头文件 根据给我们的说明,头文件将包含function1.c和function2.c中编码的实际函数的函数原型 然后,我们将在每个.c文件中包含头文件 在main.c文件中,调用在function1.c和function2.c中编码的两个函数。然而,我得到了一个错误的说法 main.c:(.te

我正在处理一些任务,基本上我们是被介绍来分割我们的文件的。到目前为止,我们只处理了一个主文件

所以,我有三个文件——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'
我不太清楚为什么会这样


我正在运行Ubuntu16.04 LTS

在GCC编译器中试试这个

gcc main.c function1.c function2.c

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

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

您必须使用

gcc -o main main.c function1.c function2.c

因此,这两个函数的实际实现在链接时是可行的。

您是否在编译器命令中包含了
function1.c
function2.c
?您使用什么命令进行编译?您需要一个最小、完整且可验证的示例。仅仅是一个错误和一个关于你的作业的故事,就使得你的问题到底是什么成为了一个猜测游戏。您需要链接所有的对象文件:
gcc-o program main.o function1.o function2.o
。如果我没有使用正确的格式,请道歉。谢谢弗雷德里克和乔纳森,这解决了我的问题!我没有意识到我必须“链接”其他文件。我使用的是gcc-omain.c