在用keil编辑的时候提示这两条,怎么都找不出原因。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在用keil编辑的时候提示这两条,怎么都找不出原因。相关的知识,希望对你有一定的参考价值。

.objDebugmain.axf: Error: L6200E: Symbol __ARM_use_no_argv multiply defined (by lcd.o and main.o)..objDebugmain.axf: Error: L6200E: Symbol main multiply defined (by lcd.o and main.o).请问这是那出现的问题啊。我找了半天也没找到原因。

回复1# yfg123 本质,就是已经定义了两个main函数,自己仔细找一下,看有没有两个定义。解决方法如下:

1、首先打开Keil,新建一个汇编语言文件,在其中输入汇编代码,同时在最开头加入。

2、将汇编源文件进行编译。可以看到,编译结果窗口输出了一连串的error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL,每个ERROR都指向REG51.INC。

3、出现这种问题的原因在于REG51.INC对特殊寄存器进行了定义,选择汇编源文件,在弹出的列表中选择“Options for FIle:xxx”,其中xxx是具体的文件名。

4、在弹出的对话框中,找到Special Function Registers,将它下面的Define 8051 SFR Names取消勾选。

5、这时可以看到error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL没有了。

参考技术A multiply defined指重复定义,说明存在变量在编译的过程中被至少两次定义。我遇到过的是我在common.h中定义了变量,然后其它.h文件又引用了common.h,这就使得keil每次编译其它.h时都会重复定义common.h中的变量,从而造成了重复定义(multiply defined)。本题为例,若存在led.h中有变量 char led0 =0这样的变量定义,在编写main.h的时候引用了#include “led.h”,编译就会出现重复定义。因此,建议将变量的定义放在.c文件中,这样若要在其它.c文件使用该变量,可以使用extern关键字。 参考技术B 提示已经很清楚了,重复定义,在led和main两个文件中 参考技术C 回复 1# yfg123 本质,就是你已经定义了两个main函数,你要自己仔细找一下,看有没有两个定义。

以上是关于在用keil编辑的时候提示这两条,怎么都找不出原因。的主要内容,如果未能解决你的问题,请参考以下文章

用keil软件编辑时,总提示函数重复定义是怎么回事

keil uvision5 已提示破解成功,怎么还有2K限制

大家快过来看看这个macros.h文件哪里有错误呢?用keil编译提示有错误……我找不出来

找回被丢弃怎么找都找不回来的git中的commit

Spring @Transactional踩坑记

nodejs连接mysql报错Error: ER_BAD_DB_ERROR: Unknown database 'book',菜鸟找不出原因?