C51编译器识别错类型 下载本文

内容发布更新时间 : 2024/5/3 21:40:59星期一 下面是文章的全部内容请认真阅读。

数组不能包含函数,但可能包含指向函数的指针。 *ERROR 167:array of fields 位域不能安排为数组

*ERROR 168:array of bit 数组没有位类型

*ERROR 169:function returns function

函数不能返回函数,但可以返回一个指向函数的指针 *ERROR 170:function returns array

函数不能返回数组,但可返回指向数组的指针 *ERROR 171:missing enclosing swith

Break/continue 语句只能出现在for,while,do while或switch语句中间。 *ERROR 172:missing enclosing swith Case语句只能用在switch语句中

*ERROR 173:missing return-expression

返回类型不是integer的函数必须包含一条代表达式的return语句。由于要与老版本兼容,编译器对返回整形值的函数不做检查

*ERROR 174:return-expression on void-function

Void 函数不能返回值,因此不能包含带表达式return的语句 *ERROR 175:duplicate case value

每个case语句必须包含一个常量表达式做其变量,这个值不能在switch语句的各级中出现多次

*ERROR 176:more than one default

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 所给的函数是参量与函数原型中的不同 *ERROR 237:function already has body 试图定义已经定义过的函数 *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

所有的组合变量(数组/结构或联合)初始化时要用花括号括起来 *ERROR 249:segment:segment too large

编译器检测到过大的数据段,最大数据段长取决于存储器空间 *ERROR 250:‘\\esc’;value exceeds 255 串常数中\\esc转义序列的值超过有效域 *ERROR 251:illegal octal digit 不是有效的八进制数字

*ERROR 252:misplace primary control、line ignored 一次性使用的编译控制伪指令必须在C模块开头指定,在#INCLUDE语句和变量说明之前 *ERROR 253:internal ERROR(ASMGEN\\CLASS)

这种错误在以下情况下发生⑴内部函数(如testbit)被不正确激活。它发生在函数原型和实参表不存在匹配问题的时候。基于这个原因,头文件中的使用要适当(intrins.h,string.h)。⑵C51识别出存在内部一致性错误,请向您的销售代理商查询 *ERROR 255:switch expression has illegal type

Switch语句中的case语句必须具有类型(u)char,(u)int或(u)short,其他类型不允许(如bit) *ERROR 256:conflicting memory model

Alien 属性的函数只能使用SMALL模式。函数的参数必须位于内部数据存储空间 *ERROR 257:alien function can not be reentrant

“alien”属性的函数不能同时具有“reentrant”属性,函数的参数不能通过重入栈传递,这也适用于外部“alien”声明和“alien”函数

*ERROR 258:mspace illegal on struct/union member

不能为结构联合成员指定存储空间,但指向对象的指针可以 *ERROR 259:pointer: different mspace 当为指针赋值或做指针比较时,指针未指向存储在同一存储空间的对象时,会产生错误或者警告。如:

Char xdata *px;/*px to char in xdata memory*/ Char code *pc;/*pc to char in code memory*/ Void main() { char c;

If(px==pc)++c;/*warning 259*/ }

*ERROR 260:pointer truncation

指针转换时部分偏移量被截断,此时指针常量(如char xdata)转为一个具有较小偏移区的指针(如char idata)

*ERROR 261:bit in reentrant function

重入函数不能包含位变量,因为位变量不能存于重入栈,而只能位于MCS51CPU的可位寻址存储区中如: