原创 Keil C 编译器常见警告与错误信息的解决方法

2008-5-1 09:15 4770 7 8 分类: MCU/ 嵌入式

[ 2007-12-25 21:34:00 | By: Dylan ]

 


 

1. Warning 280:’i’:unreferenced local variable
说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告

2 Warning 206:’Music3’:missing function-prototype
说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用
解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告

3 Compling :C:\8051\MANN.C
Error:318:can’t open file ‘beep.h’
说明在编译C:\8051\MANN.C 程序过程中由于main.c 用了指令#i nclude “beep.h”,但却找不到所致解决方法编写一个beep.h 的包含档并存入到c:\8051 的工作目录中

4 Compling:C:\8051\LED.C
Error 237:’LedOn’:function already has a body
说明LedOn( )函数名称重复定义即有两个以上一样的函数名称
解决方法修正其中的一个函数名称使得函数名称都是独立的

5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_DELAYX1MS?DELAY
说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( )函数或利用条件编译#if …..#endif,可保留该函数并不编译

6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP
FROM : 0025H
TO: 0025H
说明外部资料ROM 的0025H 重复定义地址
解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它

7 WARNING 206:’DelayX1ms’: missing function-prototype
C:\8051\INPUT.C
Error 267 :’DelayX1ms ‘:requires ANSI-style prototype C:\8051\INPUT.C
说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告
解决方法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调用

8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL:MUSIC3
MODULE:C:\8051\MUSIC.OBJ(MUSIC)
***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:MUSIC3
MODULE:C:\8051\MUSIC.OBJ(MUSIC)
ADDRESS:0018H
说明程序中有调用MUSIC 函数但未将该函数的含扩档C 加入到工程档Prj 作编译和连接
解决方法设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中去

9 ***ERROR 107:ADDESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: _DATA_GOUP_
LENGTH: 0018H
***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL: VOLUME
MODULE: C:\8051\OSDM.OBJ (OSDM)
ADDRESS: 4036H
说明data 存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存
储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则会
以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象
解决方法将以data 型别定义的公共变量修改为idata 型别的定义
说明如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的
解决办法加以归纳以期共享

文章评论1条评论)

登录后参与讨论

nneverli_217963090 2008-5-1 09:31

在keil C51中,直接调用库函数: #i nclude // 声明了void _nop_(void); _nop_(); // 产生一条NOP指令
相关推荐阅读
nneverli_217963090 2013-04-10 13:29
Intel Bus与Motorola Bus区别(Intel模式与Motorola模式的区别)
  Intel Bus与Motorola Bus区别(Intel模式与Motorola模式的区别)   在实际应用中用到的很多带并行总线的芯片的硬件连接、读写操作都分为INTERL BUS...
nneverli_217963090 2012-07-14 13:39
Replace Pioneer
www.mind-pioneer.com Replace Pioneer  ...
nneverli_217963090 2012-07-09 13:38
tny278图片
图片...
nneverli_217963090 2010-07-27 08:58
Keil 0xFD Bug
单片机到手(PS:编译软件,ISP下载软件提前两天都开始待命了),迫不及待地更新了程序,通过USB接口和复位键,ISP下载实在是太方便了。重启单片机-调整时间-OK,本应该显示“星期三”,却只显示了“...
nneverli_217963090 2010-05-24 16:53
咱又回来了。
由于工作原因,博客闲置了将近一年。重新启用。呵呵记录一下。  ...
nneverli_217963090 2009-11-13 16:32
INC指令的那点秘密!!!
不影响C标志位,哈哈,^_^,O(∩_∩)O...
我要评论
1
7
关闭 站长推荐上一条 /2 下一条