project.axf: Error: L6200E: Symbol asc2_1206/asc2_1208 multiply defined (by main.o and ili93xx.o).

2019-07-21 08:49发布

project.axf: Error: L6200E: Symbol asc2_1206 multiply defined (by main.o and ili93xx.o).
project.axf: Error: L6200E: Symbol asc2_1208 multiply defined (by main.o and ili93xx.o).

使用MDK编译的时候出现异常。
当然首然要说明的,这个问题在论有已解决的帖子。

那么我的问题是:
1,对于font.h文件使用了条件编译指令。如果main.c and ili93xx.c两个文件去包涵也不会有什么问题。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-21 13:34
 精彩回答 2  元偷偷看……
wangzixuan
2楼-- · 2019-07-21 16:38
我想这个问题应该 是这样的:1,使用条件编译是为了避免同一个文件多次包含同一内容。
                                        2,而main.c and ili93xx.c两个文件去包函头文件font.h本身是没有问题的。问题就出现在字模数组定义上,如果使用文件内部作用域的限定符,就不会出现这个问题了。表面上main.c and ili93xx.c两个文件同时使用一个字模数组asc2_1206 / asc2_1208  。对计算机而言,它们是不同的变量。不会出现重定义的问题。
                                        3,再一次说明,font.h只可以被多个.c文件包含。只要修改它的作用域。至少我是这么做的。修改后可以成功被多个文件包函。
costimen
3楼-- · 2019-07-21 16:49
wangzixuan 发表于 2015-7-13 10:20
**** 作者被禁止或删除 内容自动屏蔽 ****

不好意思,问一下修改文件的作用域是如何实现的啊?
学习STM32F103
4楼-- · 2019-07-21 17:29
感谢,这个问题搞了好久了

一周热门 更多>