解决“L6200E Symbol xx defined (by xx.o and xx.o)”重复定义问题

今天来分享一个关于自己之前遇到的一个问题,就是关于重复定义会造成的一个错误。错误提示为:

..\OBJ\LCD.axf: Error: L6200E: Symbol ascii_1206 multiply defined (by lcd_user.o and lcd.o).

Not enough information to list image symbols.

Not enough information to list load addresses in the image map.

如果不想看这么多字,大家可以直接去看解决方法

前言

首先,我遇到这个问题是因为我在编译一个LCD显示工程的时候,因为我在一个头文件里面定义了一个数组,而我在两个.c文件中调用了这个定义的头文件,也就是说我编译的时候,就会重复多次定义一个同样的数组,这样系统就会提示我重复定义,具体情况大家可以看下面的描述。

/* 头文件pic.h*/
char num[20] = {2,3,4,5,6};

/*one1.c */
#include "pic.h"
.......

/*one2.c */
#include "pic.h"

也就是说如果.h文件里面只是声明了这个数组,就不会出现重复定义

解决方法:

解决方法有两个:

第一个要么就在头文件里面定义,你只在一个地方去使用该头文件就不会报错。

第二个就是使用关键字extern进行声明,然后再在其中一个文件中对其定义,这样这个数组就可以在任意地方可以使用,同时头文件也不会限制。如:

/* pic.h */
extern char num[20];

/* one1.c */
#include "pic.h"
char num[20] = {2,3,4,5,6};  //在其中任意一个文件中定义即可

/* one2.c */
#include "pic.h"
......

好了,分享就到此结束了

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OMGMac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值