Keil C51中为什么总是报这样的警告,是在说我这个函数没有被调用吗?不被调用也警告啊?

如题所述

没有调用的确会警告。
单片机资源有限,和PC程序可不能比啊。KEIL分许出这个函数未被调用,又不敢不链接,只好保留代码段,而且函数里的局部变量也需要在RAM中保留,无法作为一般的局部变量回收,十分浪费。
一般来说,尽量把不用的函数注释掉。
如果既不想删,又不想看到这个警告,那么可以在初始化的地方这么干:
i=0; //随便找个变量即可
if(i) //不可能满足的条件,假调用
{
uart_send(....);
}追问

谢谢,现在我又出现了这样一个问题,我的单片机型号是SST89E58RD,它的RAM是1k,但是Keil中没有这个型号,只有这个系列的,然而选择这个系列建立工程的话它默认的就是256字节,这让我把剩余的那部分RAM给使用了呢?

追答

可以啊,你就选SST89x58RD,然后,在项目的CONFIGARATION中,target页,选中use onchip xram(0~2FF).
你的单片机虽然是1K,但其中的768字节逻辑上应该是外部RAM(0~2FF),所以如果你把变量定义成xdata,那么编译器就会把这个变量定义到这部分地址去。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-21
是的,如果你的函数没用,它就会警告的
因为单片机的程序空间是有限的,所以程序都是尽量精简
第2个回答  2013-11-21
浪费空间可耻!追问

我现在写的程序是因为他是一个老产品,程序升级,但实际应该过程中,现在单片机的内存已经远远不是问题,浪费空间可耻?没人想浪费空间,而且现在的单片机也不会让你浪费时间来计算空间,程序任意写。单片机的程序讲究的是高效稳定,而不是计算空间,而不是依据空间而写程序。如果你还在干那,只能说可悲,可怜,可笑。

我现在写的程序是因为他是一个老产品,程序升级,但实际应该过程中,现在单片机的内存已经远远不是问题,浪费空间可耻?没人想浪费空间,而且现在的单片机也不会让你浪费时间来计算空间,程序任意写。单片机的程序讲究的是高效稳定,而不是计算空间,而不是依据空间而写程序。如果你还在干那,只能说可悲,可怜,可笑。

相似回答
大家正在搜