标题: [新人求助]编译报错ERROR L104: MULTIPLE PUBLIC DEFINITIONS [打印本页]

作者: Ahwen2002    时间: 2022-2-8 13:16
标题: [新人求助]编译报错ERROR L104: MULTIPLE PUBLIC DEFINITIONS
各位大神好,本人单片机+编程新手,今日编写程序遇到了这个错误,百度查了一下说是变量table重复定义,但是我代码涉及到table变量的只在一个头文件里有,这是怎么一回事呢?因为已经纠结一段时间还是没能搞定,特来此求助!

以及这也是本人第一次编写使用头文件,也不知道和头文件编写或者调用错误有没有关系

3da9e107416ec6cf8fef18219fee546.png (45.47 KB, 下载次数: 81)

错误说明

错误说明

1644296994.png (62.62 KB, 下载次数: 69)

主函数

主函数

1644296994(1).png (57.32 KB, 下载次数: 69)

相应头文件代码

相应头文件代码

作者: woshige    时间: 2022-2-8 14:48
你这个table数组不要定义在头文件里面,要定义也可以,但是不要给初值。给你提供说个方法你修改试一下,把table定义并初始化在smg.c文件里面,然后在smg.h中extern一下,这样编译应该就可以了。
作者: Ahwen2002    时间: 2022-2-8 15:40
希望能有大佬给我一个方向,第一次遇到这个问题确实有点迷茫
作者: devcang    时间: 2022-2-8 15:59
变量定义在.c中,然后在.h中 extern 全局变量
作者: 13205495918    时间: 2022-2-8 16:09
smg这个h文件的数组前加个extern
作者: Ahwen2002    时间: 2022-2-8 17:02
刚刚收到了一位好心大佬的短消息,说是在.h的数组定义那里要加上extern,我去修改了一下我的代码,第一次是直接加了extern,但是编译仍然不成功,于是我就顺着这个思路,干脆把数组定义放在了.c文件中,并再在smg.h中声明,这下就可以了!
非常感谢那位大佬的指引,可惜我这里还不能发短消息所以没法直接回复,希望你能看到!
作者: Ahwen2002    时间: 2022-2-9 11:33
woshige 发表于 2022-2-8 14:48
你这个table数组不要定义在头文件里面,要定义也可以,但是不要给初值。给你提供说个方法你修改试一下,把t ...

感谢大佬!你的方法是对的,我昨天修改了这个定义就运行成功了!
作者: Ahwen2002    时间: 2022-2-9 11:34
devcang 发表于 2022-2-8 15:59
变量定义在.c中,然后在.h中 extern 全局变量

嗯嗯!谢谢你!你的方法是对的,我修改以后运行成功了!
作者: Ahwen2002    时间: 2022-2-9 11:35
13205495918 发表于 2022-2-8 16:09
smg这个h文件的数组前加个extern

啊你就是给我发短消息的那位好心大佬!我昨天顺着你的思路去修改了,最后运行成功了,非常感谢!
作者: wojiaoguogai    时间: 2022-2-9 14:01
你定义在头文件,就相当于在每个包含这个.h的.c文件里面全部定义了一遍
作者: Ahwen2002    时间: 2022-2-11 15:51
wojiaoguogai 发表于 2022-2-9 14:01
你定义在头文件,就相当于在每个包含这个.h的.c文件里面全部定义了一遍

明白了!非常感谢你的解答!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1