找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6531|回复: 3
收起左侧

Keil中如何消除UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS警告(转)

[复制链接]
ID:76127 发表于 2015-4-18 00:42 | 显示全部楼层 |阅读模式
在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










回复

使用道具 举报

ID:146240 发表于 2018-11-9 09:33 | 显示全部楼层
你好 学习了,刚好碰到这个问题,解决了
回复

使用道具 举报

ID:811834 发表于 2020-9-29 11:26 | 显示全部楼层
options for Target”  ->  LX51 Misc -> Misc controls   在输入框里这里填入REMOVEUNUSED  就可以屏蔽调未被调用的函数。未被调用的函数也不会被编译链接到程序里 不消耗rom和ram。
回复

使用道具 举报

ID:811834 发表于 2020-9-29 11:27 | 显示全部楼层
“options for Target”  ->  LX51 Misc -> Misc controls   在输入框里这里填入REMOVEUNUSED
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表