keil 警告 UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS

在Keil C中,如果没有显式调用到定义过的函数,就会出现这样的的警告。当出现这样的警告时,可以不用管,因为不影响其它部分。但是,我们知道,即使没有调用这个函数,Keil仍然把它编译连接进整个程序,不过浪费点ROM倒是不心疼。最主要的是,在这个函数中的变量,不会被列入覆盖分析范围内,也就是说这些变量占的空间不能被回收,这对于为数不多的RAM资源可是巨大的浪费啊。。。

当这个不被调用的函数写在C文件中时,可以把它注释掉来解决这个问题。我想知道的是,当我将一组函数包装成lib文件时,又怎么解决问题呢?总不能每次都重新生成lib吧,这样的话移植性不就成问题了?还有,Keil自带的库中必然有很多函数,也必然有很多用不到的,为什么就不没有UNCALLED SEGMENT呢?我猜想它的lib的源代码有什么特殊的地方(我猜的)。小弟请教各位高手解决此问题的方法或技巧。

//=========================================================================

(1)

可以用条件编译啊, #ifdef ** (程序段1) #else (程序段2) #endif
是在前面用#define定义的标识符,作用是如果定义了,就编译(程序段1),否则编译(程序段2).
如果你一定要考虑可移植性的话,就这样做,否则还是

(2)直接用注释符隐蔽掉,或者直接删掉,会比较快。

//=========================================================================

(3)想不显示这些提示:则可设置如下:

option for target —>bl51 misc —>disable warning ==这里写入16

Build target 'Xifeng' compiling main.c... linking... BL51 BANKED LINKER/LOCATER V6.22 - SN: Eval Version COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2009 ".\Objects\main.obj", ".\Objects\Led.obj", ".\Objects\Seg.obj", ".\Objects\Key.obj", ".\Objects\Init.obj", ".\Objects\ds1302.obj", ".\Objects\iic.obj" TO ".\Objects\Xifeng" PRINT(".\Listings\Xifeng.m51") RAMSIZE(256) *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_LED_DISP?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?LED_OFF?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?BEEP?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?RELAY?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?MOTOR?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_AD_READ?IIC *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_EEPROM_WRITE?IIC *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_EEPROM_READ?IIC *** WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_READ_RTC?DS1302 CALLER1: ?PR?TIMER1ISR?MAIN CALLER2: ?C_C51STARTUP ****************************************************************************** * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0A12H BYTE (125%) * ****************************************************************************** Program Size: data=111.3 xdata=0 code=3396 LINK/LOCATE RUN COMPLETE. 9 WARNING(S), 0 ERROR(S) *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_LED_DISP?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?LED_OFF?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?BEEP?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?RELAY?LED *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY
最新发布
04-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值