完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现在刚刚开始使用模块化编程写程序,我这两天写了一个程序,上个帖子中把结构体变量的初始化问题解决了,但是解决后编译通过了,但链接出了问题,以下是报错的信息:
.obj拉力倾斜.axf: Error: L6200E: Symbol Message multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Message multiply defined (by usart_485.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Message multiply defined (by main.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Message multiply defined (by STM32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol ADC_Value multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol ADC_Value multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol ADDR_Flash multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol ADDR_Flash multiply defined (by usart_485.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol ADDR_Flash multiply defined (by main.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol ADDR_Flash multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLDRange_Flash multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLDRange_Flash multiply defined (by usart_485.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLDRange_Flash multiply defined (by main.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLDRange_Flash multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Pitch_un multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Pitch_un multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Roll_un multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Roll_un multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLD_un multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLD_un multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Vol_un multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Vol_un multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Temperature_un multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol Temperature_un multiply defined (by stm32f10x_it.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLD_Range multiply defined (by adc_dma.o and sys_config.o). .obj拉力倾斜.axf: Error: L6200E: Symbol VLD_Range multiply defined (by stm32f10x_it.o and sys_config.o). 上面报错信息中Message 变量是一个结构体变量,它放在sys_config.h这个头文件中,在adc_dma.c usart_485.c main.c stm32f10x_it.c这四个源文件中用到了这个结构体变量; ADC_Value ADDR_Flash VLD_Range 这几个变量也是在sys_config.h这个头文件中定义的; Pitch_un Roll_un VLD_un Vol_un Temperature_un这几个是联合体变量,也是在sys_config.h这个头文件中定义的, VLD_Range也是定义在sys_config.h头文件中, 在其它的源文件中用到这些变量的时候我都包含了sys_config.h这个头文件,但是总说我重定义了,对模块化编程搞的不是太明白,不知道怎么改。 我好像记得模块化编程的时候定义在头文件中的全局变量在其它文件中是不是只要包含了头文件就可以用了呢?而且在KeilMDK中可以不用加extern,但是不知道为什么,我还是出现了这么多这样的错误 |
|
相关推荐
2个回答
|
|
在头文件中不能定义u8/结构体之类的变量吗? 我们进行结构化编程的时候对于变量一般不是这样的吗:把其它文件模块要用的全局变量定义在头文件中,在需要使用的程序模块中包含这个头文件;而把其它文件中用不到而只有本程序模块中用到的全局变量定义在源文件中,供本程序模块使用,而且在使用的时候还可省掉extern这个修饰符。我在头文件中用了u8这类的,但是我包含了stm32f10x_lib.h这个头文件,我觉得应该不会出错的,但是还是报错,不知道原子哥能不能从原理上指导一下呢,非常感谢,呵呵
|
|
|
|
不能定义的!!
如果你在一个.h文件种有形如:u8 x=0;之类的语句. 如果只在一个.c文件中调用就没有问题.如果多个.c文件调用同一个.h文件,问题就来了.他会提示说:重复定义. |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:57 , Processed in 0.730483 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号