找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1989|回复: 10
收起左侧

[新人求助]编译报错ERROR L104: MULTIPLE PUBLIC DEFINITIONS

[复制链接]
ID:1004377 发表于 2022-2-8 13:16 | 显示全部楼层 |阅读模式
各位大神好,本人单片机+编程新手,今日编写程序遇到了这个错误,百度查了一下说是变量table重复定义,但是我代码涉及到table变量的只在一个头文件里有,这是怎么一回事呢?因为已经纠结一段时间还是没能搞定,特来此求助!

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

错误说明

错误说明

主函数

主函数

相应头文件代码

相应头文件代码
回复

使用道具 举报

ID:174087 发表于 2022-2-8 14:48 | 显示全部楼层
你这个table数组不要定义在头文件里面,要定义也可以,但是不要给初值。给你提供说个方法你修改试一下,把table定义并初始化在smg.c文件里面,然后在smg.h中extern一下,这样编译应该就可以了。
回复

使用道具 举报

ID:1004377 发表于 2022-2-8 15:40 | 显示全部楼层
希望能有大佬给我一个方向,第一次遇到这个问题确实有点迷茫
回复

使用道具 举报

ID:277550 发表于 2022-2-8 15:59 | 显示全部楼层
变量定义在.c中,然后在.h中 extern 全局变量
回复

使用道具 举报

ID:908826 发表于 2022-2-8 16:09 | 显示全部楼层
smg这个h文件的数组前加个extern
回复

使用道具 举报

ID:1004377 发表于 2022-2-8 17:02 | 显示全部楼层
刚刚收到了一位好心大佬的短消息,说是在.h的数组定义那里要加上extern,我去修改了一下我的代码,第一次是直接加了extern,但是编译仍然不成功,于是我就顺着这个思路,干脆把数组定义放在了.c文件中,并再在smg.h中声明,这下就可以了!
非常感谢那位大佬的指引,可惜我这里还不能发短消息所以没法直接回复,希望你能看到!
回复

使用道具 举报

ID:1004377 发表于 2022-2-9 11:33 | 显示全部楼层
woshige 发表于 2022-2-8 14:48
你这个table数组不要定义在头文件里面,要定义也可以,但是不要给初值。给你提供说个方法你修改试一下,把t ...

感谢大佬!你的方法是对的,我昨天修改了这个定义就运行成功了!
回复

使用道具 举报

ID:1004377 发表于 2022-2-9 11:34 | 显示全部楼层
devcang 发表于 2022-2-8 15:59
变量定义在.c中,然后在.h中 extern 全局变量

嗯嗯!谢谢你!你的方法是对的,我修改以后运行成功了!
回复

使用道具 举报

ID:1004377 发表于 2022-2-9 11:35 | 显示全部楼层
13205495918 发表于 2022-2-8 16:09
smg这个h文件的数组前加个extern

啊你就是给我发短消息的那位好心大佬!我昨天顺着你的思路去修改了,最后运行成功了,非常感谢!
回复

使用道具 举报

ID:415064 发表于 2022-2-9 14:01 | 显示全部楼层
你定义在头文件,就相当于在每个包含这个.h的.c文件里面全部定义了一遍
回复

使用道具 举报

ID:1004377 发表于 2022-2-11 15:51 | 显示全部楼层
wojiaoguogai 发表于 2022-2-9 14:01
你定义在头文件,就相当于在每个包含这个.h的.c文件里面全部定义了一遍

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表