首先解释一下警告的含义:出现了已经定义过但是没有显式调用过得函数。
经常出现在我们调试代码的时候改来改去顾头不顾尾的时候,尤其是屏蔽掉某些部分测试其他功能的时候。
也就是说,当我们在解决其他问题的调试的时候,是可以无视这类型的报错的,毕竟他不会影响别的部分嘛。
但是呢,即使没有调用这个函数,Keil仍然把它编译连接进整个程序,不过浪费点ROM倒是不心疼。相比之下,这个未被调用的函数中的变量,不会被列入覆盖分析范围内,即这些变量占的空间不能被回收,这样一来,对于为数不多的RAM资源就造成了巨大的浪费。
解决方法
1. 无视这些提示,则可设置如下:option for target--->BL51 Misc--->disable warning ==这里在空位写入16,重新编译即可无视该类型的警告。
(由于我个人仅仅是因为在调试过程中,因为经常涉及屏蔽某部分对别的部分进行测试,所以采取了屏蔽该类型错误的处理方法)这样的处理方式未必适合你。
2. 可以用条件编译啊
#ifdef**
(程序段1)
#else
(程序段2)
#endif
**是在前面用#define定义的标识符,作用是如果定义了**,就编译(程序段1),否则编译(程序段2)。
这样做既能保证代码的可移植性也能改掉警告,是相对来说较好的处理方法。
3. 直接用注释符隐蔽掉,或者直接删掉,会比较快。
//=========================================================================
简单粗暴,但不够细致,而且调试中的脑子也未必可以清醒到让你我每次都能把所有相关的函数正正好好都屏蔽掉,删掉的话又会影响调试其他功能。
我的问题解决了,顺带总结分享。

1537

被折叠的 条评论
为什么被折叠?



