C语言调试过程中duplicate symbol错误分析

说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境)。如下图:

 

由上图我们可以看出C语言由编写源程序->编译->链接->运行几个步骤进行。

编写源程序:

C语言的源文件的扩展名为.c,源文件以ASCII的形式存储,不能直接被计算机执行。

编译:

1.把C语言源程序翻译成计算机可以识别的二进制代码,由编译器完成。

2.编译的同时进行语法检查,如果发现语法错误,则编译失败。如果编译成功,生成扩展名为“.obj”的目标文件。

3.每个源文件是单独进行编译的,如果一个项目中有多个.c源文件,则会生成多个.obj目标文件。

链接:

1.将所有有关联的obj目标文件,及系统提供的C库函数等组合在一起生成可执行文件。

2.生成的可执行文件的文件名与源程序文件名形同,计算机可以直接执行。

运行:

双击即可运行生成的可执行文件。

二.错误原因

源文件中引入的另一个源文件。

例如:在main.c中#include

三.错误分析

由于编译的过程是对每个源文件单独进行编译的,如果单个源文件没有语法错误,编译就会通过。而链接过程是将所有有关联的obj目文件及系统的库函数组合在一起。而include预处理指令类似与代码的拷贝,并且C语言默认情况下不允许重复定义函数,因此引入的源文件中函数在链接时会报重复定义的错误。也就是我们看到的duplicate symbol错误。

小伙伴们,以后要注意了,在C语言开发中,不允许在源文件中引入其他的源文件,只可以引入头文件呦! 

永不止步步 发表于01-03 10:25 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308317个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号