野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14268|回复: 13

重复定义求解

[复制链接]
发表于 2018-10-24 23:35:18 | 显示全部楼层 |阅读模式
在学习指南者DMA的过程中,发现了一个问题,在.h文件中定义的数据在main.c中使用的话,就会出现重复定义的报错,不管加不加extern再次定义都会报错,求解。。。
以下是做的一个试验,可以看到会出现重复定义的问题。。。

草图 (2).png
捕获1.PNG
捕获.PNG
回复

使用道具 举报

 楼主| 发表于 2018-10-25 08:17:10 | 显示全部楼层
有人么??????
回复

使用道具 举报

发表于 2018-10-25 10:15:45 | 显示全部楼层
.h文件中,把“=100”去掉
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-10-25 17:23:52 | 显示全部楼层
君负花开 发表于 2018-10-25 10:15
.h文件中,把“=100”去掉

去掉了,还是报错
回复 支持 反对

使用道具 举报

发表于 2018-10-25 17:36:05 | 显示全部楼层
角落 发表于 2018-10-25 17:23
去掉了,还是报错

什么错误叻 还是重复定义吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 17:50:59 | 显示全部楼层
君负花开 发表于 2018-10-25 17:36
什么错误叻 还是重复定义吗

是的,还是重复定义,图贴在下面了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 17:51:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 17:52:37 | 显示全部楼层
角落 发表于 2018-10-25 17:50
是的,还是重复定义,图贴在下面了

贴图失败。。。。
总之报错信息还是
.\Objects\template.axf: Error: L6200E: Symbol abc multiply defined (by h.o and main.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 17:54:52 | 显示全部楼层
试了一下发现只要在.h文件中定义变量就会报错,不管有没有在主函数中调用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 18:59:46 | 显示全部楼层
又自己试了一下明白了,全局变量不可以定义在.h文件中,加在.c里然后别的地方调用的时候加extern即可
回复 支持 反对

使用道具 举报

发表于 2018-10-28 14:28:06 | 显示全部楼层
.H不能定义变量?
回复 支持 反对

使用道具 举报

发表于 2018-10-28 14:29:21 | 显示全部楼层
.h 里声明  extern int abc;  (此处不要赋值)
回复 支持 反对

使用道具 举报

发表于 2018-10-29 08:03:05 | 显示全部楼层
头文件*.h中,不能出现任何的定义,那么什么是定义,就是在变量前面直接就是int、uint、char等关键字;
只能出现声明,那么什么是声明,就是在用extern 来对某一类变量进行声明,说这个变量是外部的,通过*.h文件作为一个“桥梁”,让别的*.c文件可以通过这个“桥梁”来访问这个变量。

也正因如此,*.h文件在使用时,被各种需要的*.c文件包含进了。

假如你是在*.h文件里声明,那么谁要包含*.h文件,谁就会对变量同时进行声明了一次!!!

*.h文件被include到*.c文件内,实际就是把*.h文件直接copy一份到*.c文件的开头。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-11-5 21:03:10 | 显示全部楼层
DigCore 发表于 2018-10-29 08:03
头文件*.h中,不能出现任何的定义,那么什么是定义,就是在变量前面直接就是int、uint、char等关键字;
只 ...

是的,已经明白了!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 16:27 , Processed in 0.050129 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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