Warning提示的原因是 一些未使用的函数被编译进入芯片,浪费了RAM/ROM. 解决的方法: 1.将不用的函数注释: 2.在未使用函数的首尾加条件编译 #ifdef 函数名 和 #endif ,不用的时候就不会识别了…
在Keil C中,如果没有显式调用到定义过的函数,就会出现这样的的警告.当出现这样的警告时,可以不用管,因为不影响其它部分.但是,我们知道,即使没有调用这个函数,Keil仍然把它编译连接进整个程序,不过浪费点ROM倒是不心疼.最主要的是,在这个函数中的变量,不会被列入覆盖分析范围内,也就是说这些变量占的空间不能被回收,这对于为数不多的RAM资源可是巨大的浪费啊...当这个不被调用的函数写在C文件中时,可以把它注释掉来解决这个问题.我想知道的是,当我将一组函数包装成lib文件时,又怎么解决问题呢?…
把target options中的device页中选上"Use LX51 ...",然后在LX51 Misc页中的Misc Control中填入"REMOVEUNUSED",确认后重新编译即可自动去掉未调用的函数. 这个指令在KEIL的帮助文档里有的…
1. Warning 280:’i’:unreferenced local variable 说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告 2 Warning 206:’Music3’:missing function-prototype 说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用 解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣…
1. LAB100.C(12): error C216: subscript on non-array or too many dimensions 原程序如下: #include <reg51.h> #include <intrins.h> void delay(int); unsigned ]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a}; main() { int i,j; P2=0xff; ) { P2=0x7f; ;i<;i++…
一般的编译器将函数中的区域变数动态配置在stack,等函数结束空间就释放出来.因为8051 的内部记忆体很少,只有区区128 或256 bytes,而且stack 也是共用这块记忆体.为了节省stack 空间,所以区域变数基本上是静态配置在固定位址,也就是变成全域变数.如此就又造成浪费记忆体的情况,为了解决这个问题,所以8051 的编译器基本上都采用所谓的data overlaying 技术来克服区域变数浪费空间的问题. 所谓data overlaying 是指没有呼叫关系的函数,它们的区域变数…
;说明:这是1950编译后生成的Keil_1910.M51文件,以此为例来讲解M51文件 // :: PAGE BL51 BANKED LINKER/LOCATER V6., INVOKED BY: .obj TO Keil_1910 RAMSIZE () STACK (?STACK (0080H)) MEMORY MODEL: SMALL WITH FLOATING POINT ARITHMETIC INPUT MODULES INCLUDED: 1910base.obj (PROC1910)…
错误代码及错误信息 错误释义 error 1: Out of memory 内存溢出 error 2: Identifier expected 缺标识符 error 3: Unknown identifier 未定义的标识符 error 4: Duplicate identifier 重复定义的标识符 error 5: Syntax error 语法错误 error 6: Error in real constant 实型常量错误 error 7: Error in integer consta…
KEIL编译错误信息表   错误代码及错误信息 错误释义 error 1: Out of memory 内存溢出 error 2: Identifier expected 缺标识符 error 3: Unknown identifier 未定义的标识符 error 4: Duplicate identifier 重复定义的标识符 error 5: Syntax error 语法错误 error 6: Error in real constant 实型常量错误 error 7: Error in…
通过*.m51文件我们能够清楚的看到单片机存储器的使用情况,以及能够看到每一个变量包含局部变量的位置. 之前碰到一个问题,相同的程序,在small模式下编译后执行没问题,但在large模式下能够编译.可是执行出错.最后查看m51文件,发现了问题.在一个对时序要求非常严格的地方声明几个局部变量.这几个局部变量有的被分配到data中.有的分配到xdata,在xdata中的变量訪问时间要大于data中.导致整个代码时间管控出现混乱,最后将分配到xdata的变量用data修饰后.,编译成功通过. 以下是…