未元星系 发表于 2024-6-3 23:16:10

STC8H8K64U代码报错 | 已解决

本帖最后由 未元星系 于 2024-6-5 09:27 编辑

请教大佬,代码并没有重定义,请问这种报错是怎么回事?




soma 发表于 2024-6-4 09:41:17

错误原因:MULTIPLE PUBIC DEFINITIONS 多个公共的定义,在这里就是变量 KILL_TIME 重复定义
解决方法:把头文件中的变量 dmabuffer 定义前加上 extern 关键字(只用变量声明不用初始化),然后在你要调用该变量的C文件的程序之前再定义一次 (注意第一个调用的C文件要负责附带初始化该变量,其他调用的c文件就不需要初始化过程)

xxxevery 发表于 2024-6-4 09:44:34

最好把工程文件发上来

小飞侠 发表于 2024-6-5 08:23:47

你有可能是变量定义在头文件中,这个头文件被多个c文件包含,造成重复定义

未元星系 发表于 2024-6-5 09:27:09

感谢大家,问题已解决。

_奶咖君_ 发表于 2024-6-5 09:42:53

未元星系 发表于 2024-6-5 09:27
感谢大家,问题已解决。

所以问题是怎么发生的,又是怎么解决的,,发出来好让其他有同样问题的坛友搜索啊

未元星系 发表于 2024-6-5 15:10:09

_奶咖君_ 发表于 2024-6-5 09:42
所以问题是怎么发生的,又是怎么解决的,,发出来好让其他有同样问题的坛友搜索啊 ...

我当时是定义了两个DMA缓存数组,一个用于发送数据,一个用于接收数据,一个命名是DMAbuffer,另一个是dmabuffer,改个命名再直接编译成功,当时脑子糊涂了属于是。

soma 发表于 2024-6-5 15:15:12

重复定义导致的啊

未元星系 发表于 2024-6-5 17:08:42

soma 发表于 2024-6-5 15:15
重复定义导致的啊

是的,低级错误

标记重捕 发表于 2024-6-21 18:50:28

看报错,就是重复定义导致的错误呀
页: [1]
查看完整版本: STC8H8K64U代码报错 | 已解决