我正在进行一些设计,基本上我们正在介绍将文件拆分。到目前为止,我们只处理了一个主文件。
所以,我有三个文件 - 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
答案 0 :(得分:1)
这看起来像链接器抱怨找不到这两个函数。
使用函数原型,只是说编译器在最终程序中链接在一起时函数的实现是可用的一种方式。然后,Gcc将生成一个目标文件,其中包含main的已编译代码以及程序仍需要某些函数的地址才能执行的信息。链接器(由gcc调用的程序)然后将main.c的目标文件与两个函数的目标文件放在一起,并将这些地址插入到主程序的机器代码中的正确位置。
您必须使用
编译您的程序gcc -o main main.c function1.c function2.c
这样两个函数的实际实现将在链接时可用。
答案 1 :(得分:0)
在GCC编译器中尝试这个,
gcc main.c function1.c function2.c