Keil中的常见错误和警告 下载本文

Switch语句中不能包含多于一个的 default语句 *ERROR 177:different struct/union

赋值或参数传递中使用了结构/联合的不同类型 *ERROR 178:struct/union comparison illegal

根据 ANSI C,两个结构或联合的比较是不允许的 *ERROR 179:cannot/cast from/to void-type

将 void类型转化为其他类型数据或将其他类型转化为 void类型都是非法的 *ERROR 180:cannot cast to’function’

转化为function是非法的,使用函数指针指向不同的函数 *ERROR 181:incompatible operand

在所给的运算符中至少有一个操作符类型是无效的 *ERROR 182:point to different object 报告指针使用不一致 *ERROR 183:unmodifiable value

预修改的对象位于 CODE 存储区,因而不能修改 *ERROR 184:sizeof :illegal operand

Sizeof运算符不能决定函数或位域大小 *ERROR 185:different memory space

对象说明的存储空间与前面的不一致 *ERROR 186:invalid dereference

这条错误信息可能由编译器内部问题产生的 *ERROR 187:not an lvalue

所需参量必须是可变对象的地址 *ERROR 188:unknown object size

无法计算对象的大小,因为缺少数组的维数或因为通过 void指针的间接访问 *ERROR 189:‘&’on bit/sfr illegal

地址操作符‘&’不允许用于位对象或 sfr *ERROR 190:’&’:not an lvalue

地质部是可变的对象,不能作为左值 *ERROR 191:‘&’on constant

试图为所列类型常数建立指针 *ERROR 192:‘&’on array/function

地址操作符&不允许用于数组或函数,函数和数组本身都代表了地址 *ERROR 193:illegal op-type(s) *ERROR 193:illegal add/sub on ptr *ERROR 193:illegal operation on bit(s) *ERROR 193:bad operand type

当一个表达式使用给定运算符的非法操作类型时就会出现该错误,使用个定运算符的非法操

作类型的无效的表达式,例如 bit+bit,ptr+ptr,或 ptr*。错误信息包括引起错误的运 算符。

下列运算可使用位操作符 赋值(=)

OR/复合 OR(|,|=) AND/复合 AND(&,&=) XOR/复合 XOR(^,^=)

位或常数的安位比较(= =,!=) 取反(~) *ERROR 194:’*’indirection to object of unknown size 间接操作符*不能用于 void指针(void*),因为指针所指的对象的大小时未知的 *ERROR 195:’*’illegal indirection

间接操作符*不能用于非指针变量 *ERROR 196:mspace probably invalid

产生此警告是因为某些常数值赋给指针并且常数没有形成一个有效的指针值,有效的指针常

数类型为 long/unsigned long。编译器对指针对象采用 24bit(3 字节),低 16 位表示偏

移,高 8 位表示存储类的选择,在低字节中,值从1 到 5 表明了xdata/pdata/idata/data/ 和 code 的存储类

*ERROR 197:illegal pointer assignment

试图将一个非法变量赋给指针,只有另一个指针或指针变量可以赋给指针 *ERROR 198:size of returns zero

求某些对象长度得到 0,如果对象是外部的或一个数组中并非所有维的大小都是已知时得到

0,这时候该值可能是错的。

*ERROR 199:left size of’->’requires struct/union pointer ->操作符的左边变量必须是结构或变量 *ERROR 200:left size of ‘.’requires struct/union 操作符的左边变量必须是结构/联合 *ERROR 201:undefined struct/union tag

所给的结构/联合标记名是未知的 *ERROR 202:undefined identifier 所给的标示符未定义 *ERROR 203:bad storage class(nameref)

该错误表示编译器的内部有问题 *ERROR 204:undefined member

所给的结构/联合成员名未定义 *ERROR 205:cannot call an interrupt function

中断函数不能像普通函数那样调用,因为这种函数的头端和尾端是为中断特殊编码的

*ERROR 206:missing function-prototype 调用的函数缺少原型说明

*ERROR 207:declared with ‘void’ parameter list

用 void参数说明的函数不接受调用者传来的参数 *ERROR 208:too many actual parameter 函数调用包含了多余的实参 *ERROR 209:too few actual parameter

函数调用时传递的实参过少 *ERROR 210:too many nested calls

超过了10 个函数嵌套调用的极限 *ERROR 211:call not to a function

函数调用时没有函数的地址或未对指向函数的指针赋值 *ERROR 212:indirect call with parameter 由于参数传递方法的限制,通过指针的间接函数调用不能直接作为实参。这种参数传递方法

要求被调用的函数名已知,因为参数的写入要被写入调用函数的数据段。然而间接调用时函

数的的名字时未知的

*ERROR 213:left side of assign_op not an lvalue 在赋值操作符左边要求可变的对象 *ERROR 214:cannot cast non_pointer to pointer 非指针不能转化为指针

*ERROR 215:cannot cast pointer to not_int/pointer

指针可以转化为另一个指针或整数,但不能转化为其他类型 *ERROR 216:subscript on non_array or too many dimensions 对非数组使用了下标或数组维数过多 *ERROR 217:non_integral index

数组的下标表达式必须是整型类型 *ERROR 218:void_type in controlling expression

While,for 或 do while语句中表达式不能是 void类型 *ERROR 219:long constant truncated to int

企图把长整型常量截断为整型数是错误的 *ERROR 220:illegal constant expression 非法常量表达式

*ERROR 221:non_constant case/dim expression

Case值或下标值([])要求用常量表达式 *ERROR 222:div by zero *ERROR 223:mod by zero

编译器检测到 0 除或 0 模的错误 *ERROR 224:illegal operation on float/double

AND 和NOT一类的运算符不允许作用于float/double *ERROR 225:expression too complex ,simplify 表达式太复杂,必须简化

*ERROR 226:duplicate struct/union/enum tag 结构/联合/枚举类型中有重复标记 *ERROR 227:not a union tag

所给的标记名虽已定义,但不是联合的标记 *ERROR 228:not a struct tag

所给的标记名虽已定义,但不是结构的标记 *ERROR 229:not an enum tag

所给的标记名虽已定义,但不是枚举的标记

*ERROR 230:unknown struct/union/enum tag 所给的结构/联合/枚举标记名未定义 *ERROR 231:redefinition

所给的名字已经定义,不能再定义 *ERROR 232:duplicate label

所给的标号已经订义 *ERROR 233:undefined label

当对函数进行分析后,编译器检查到函数有未定义的标号,发出错误信息 *ERROR 234:‘{’scope stack overflow(31)

超过了最大为 31 个的功能嵌套极限,多余的块被忽略 *ERROR 235:parameter:different type 函数实参类型与函数原型中的不同 *ERROR 236:different length of parameter lists

所给的函数是参量与函数原型中的不同 Compling:C:\\8051\\LED.C

Error 237:’LedOn’:function already has a body // 试图定义已经定义过的函数

说明 LedOn( )函数名称重复定义,即有两个以上一样的函数名称,解决方法修正其中的一个

函数名称使得函数名称都是独立的。 *ERROR 238:duplicate member *ERROR 239:duplicate parameter

重复定义结构成员或函数参数 *ERROR 240:more than 128 local bit’s 位变量定义总数不能超过128 *ERROR 241:auto segment too large

局部对象要求的空间超过了该模式的最大值。最大栈长定义如下:SMALL-128 字

节,COMPACT-256字节,LARGE-64k *ERROR 242:too many initializers 初始化对象超限 *ERROR 243:string out of bounds

串中字符数超过了字符数组要求初始化的字符数 *ERROR 244:can’t initialize .bad type or class 试图初始化位或sfr

*ERROR 245:unknown pragma, line ignored

未知的pragma 语句,因此该行被忽略 *ERROR 246:floating point error

本错误发生在浮点变量超过 32 位有效字长时,32 位 IEEE 格式的浮点值的取值范围是±

1.75494E-38~±3.402832E+38

*ERROR 247:non_address +/-constant initializer

有效的初始化表达式必须是非地址量+/-常量 *ERROR 248:aggregate initialization needs curly braces

所有的组合变量(数组/结构或联合)初始化时要用花括号括起来