【转】 c51错误2


【转】 c51错误2
2011年08月31日
  *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的可位寻
  址存储区中如:
  Void test () reentrant
  { bit b0;/*illegal*/
  Static bit b1;/*legal*/
  }
  *ERROR 262:’using/disable’: function returns bit
  使用属性using选择寄存器组的函数或使用关中断(#pragma disable)功能的函数不能返回
  bit类型。如:
  Bit test ()using 3/*error 261*/
  { bit b0;
  return(b0);
  }
  *ERROR 263:save-stack overflow/underflow
  “#pragama save”最大嵌套级为8 级。Save 和restore 指令按FIFO 原则工作
  *ERROR 264:intrinsic:declaration/ activation error
  内部参数定义不正确
  *ERROR 265:recursive call to non_reentrant function
  发现非重入函数被递归调用。直接递归用生成代码可有效查出,间接递归调用由L51 发现
  L51 连接定位器使用错误提示
  1 警告
  警告并不终止L51 的执行。这时产生的程序模块由程序员自己斟酌使用还是不使用。但是
  此时的列表文件和屏幕显示可能非常有用。
  2 错误
  错误并不终止L51 的执行。这时产生的模块是不能使用的。但是此时的列表文件和屏幕显
  示可能非常有用。
  3 致命错误
  致命错误发生时立即终止L51 的执行。
  1警告
  *WARNING1:UNSOLVED EXTERNAL SYMBOLS
  SYMBOLS: external_name
  MODULE: filename (modulename)
  指定模块的外部符号在PUBLIC符号表中找不到
  *WARNING2:REFERENCE MADE TO UNSOVED EXTERNAL
  SYMBOLS: external_name
  MODULE: filename (modulename)
  ADDRESS:code_address
  访问了未能匹配的外部符号code地址
  *WARNING4:DATA SPACE MEMORY OVERLAP
  FROM:byte,bit,address
  TO: byte,bit,address
  数据空间指定范围出现覆盖
  *WARNING5:CODE SPACE MEMORY OVERLAP
  FROM:byte,bit,address
  TO: byte,bit,address
  程序空间指定范围出现覆盖
  *WARNING6:XDATA SPACE MEMORY OVERLAP
  FROM:byte,bit,address
  TO: byte,bit,address
  外部数据空间指定范围出现覆盖
  *WARNING7:MODULE NAME NOT UNIQUE
  MODULE:filename(modulename)
  模块名重名。模块未处理
  *WARNING8:MODULE NAME EXPLICITLY REQUESTED FROMANOTHER FILE
  MODULE:filename(modulename)
  其他文件指名要求本模块名
  *WARNING9:EMPTYABSOLUTE SEGMENT
  MODULE:filename(modulename)
  本模块包含空的绝对段,因未定位,它可能在不通知的情况下随时被覆盖
  *WARNING10:CANNOT DETERMINE ROOT SEGMENT
  L51 对输入文件要求分辨是C51还是PL/M文件,然后进行流程分析,在无法确定的时候,
  发出本警告。它发生在主程序被汇编调用的时候,需要程序员用OVERLAP 特殊控制选项
  进行干预
  *WARNING11:CANNOT FIND SEGMENT OR FUNCTION NAME
  NAME:overlap_control_name
  在目标模块中找不到OVERLAP控制选项中规定的段或者函数间调用
  *WARNING12:NO REFERENCE BETWEEN SEGMENTS
  SEGMENT1:segment_name
  SEGMENT2:segment_name
  试图用OVERLAP控制选项删除本来不存在的段间访问或者函数间调用
  *WARNING13:RECURSIVE CALL TO SEGMENT
  SEGMENT:segment_name
  CALLER:segment_name
  CALLER段递归调用SEGMENT段。PL/M51和C51的非重入函数不允许递归调用
  *WARNING14:IMCOMPIABLE MEMORYMODEL
  MODULE:filename(modulename)
  MODEL:memory_model
  指定模块试图与以前不同的存储模式编译。
  *WARNING15:MULTICALL TO SEGMENT
  SEGMENT:segment_name
  CALLER1:segment_name
  CALLER2:segment_name
  两个函数调用同一个函数(如主函数和中断函数),参数和局部变量将被覆盖
  *WARNING15:UNCALLED SEGMENT,IGNORED FOR OVERLAP PROCESS
  SEGMENT:segment_name
  所给的段未被调用,已被排除在覆盖过程之外。
  L51错误
  *ERROR101: SEGMENT COMBINATION ERROR
  SEGMENT:segment_name
  MODULE:filename(modulename)
  由于连接错误所给段未能连入类型总段,并被忽略
  *ERROR102:EXTERN ATTRIBUTE MISMATCH
  SYMBOL:external_name
  MODULE:filename(modulename)
  所给外部符号名属性错,并被忽略
  *ERROR103:EXTERN ATTRIBUTE DO NOTMATCH PUBLIC
  SYMBOL:public_name
  MODULE:filename(modulename)
  所给外部符号名属性与公用符号名不匹配,并被忽略
  *ERROR104:MUTIPULIC DEFINITION
  SYMBOL:pulic_name
  MODULE:filename(modulename)
  所给公用符号重名
  *ERROR105:PUBLIC REFERS TO IGNORED SEGMENT
  SYMBOL:public_name
  MODULE:filename(modulename)
  所给外部符号名属性错,并被忽略
  *ERROR106: SEGMENT OVERFLOW
  SEGMENT:segment_name
  所给段长超过64,未处理
  *ERROR107:ADDRESS SPACE OVERLAP
  SPACE:space_name
  SEGMENT:segment_name
  由于存储空间不够,所给类型总段未能装入,已被忽略
  *ERROR108:SEGMENT IN LOCATING CONTROL CANNOTALLOCATED
  SEGMENT:segment_name
  命令行定位控制中的段由于属性问题未能分配
  *ERROR109:EMPTY RELOCATABLE SEGMENT
  SEGMENT:segment_name
  可在定位类型总段长度为零,未定位
  *ERROR110:CANNOT FIND SEGMENT
  SEGMENT:segment_name
  命令行所给的段在输入模块中未找到,被忽略
  *ERROR111:SPECIFIED BITADDRESS NOT ON BYTE MEMORY
  SEGMENT:segment_name
  位地址不在字界上,位段被忽略
  *ERROR112:SEGMENT TYPE NOT LEGAL FOR COMMAND
  SEGMENT:segment_name
  命令行所给的段类型非法,被忽略
  *ERROR114:SEGMENT DOES NOT FIT
  SPACE:space_name
  SEGMENT:segment_name
  BASE:base_address
  LENGTH: segment_length
  由于所给段的长度或者基地址未定位,故被忽略
  *ERROR115:INPAGE SEGMENT IS GREATER THAN 256 BYTES
  SEGMENT:segment_name
  所给INPAGE 属性的段长于256字节未能连入类型总段,并被忽略
  *ERROR116:INBLOCK SEGMENT IS GREATER THAN 2048 BYTES
  SEGMENT:segment_name
  所给INBLOCK 属性的段长于2048字节未能连入类型总段,被忽略
  *ERROR117:BITADDRESSABLLE SEGMENT IS GREATER THAN 16 BYTE
  SEGMENT:segment_name
  所给BITADDRESSABLE 属性的段长于16 字节未能连入类型总段,被忽略
  *ERROR118:REFERENCE MADE TO ERRONEOUS EXTERNAL
  SYMBOL:symbol_name
  MODULE:file_name(modulename)
  ADDRESS:code_address
  企图访问错误的外部程序地址
  *ERROR119:REFERENCE MADE TO ERRONEOUS SEGMENT
  SYMBOL:symbol_name
  MODULE:file_name(modulename)
  ADDRESS:code_address
  企图访问错误段的程序地址
  *ERROR120:CONTENT BELONGS TO ERROREOUS SEGMENT
  SEGMENT:segment_name
  MODULE:file_name(modulename)
  该内容属于有错误的段
  *ERROR121:IMPROPER FIXUP
  MODULE:file_name(modulename)
  SEGMENTsegment_name
  OFFSET:segment_name
  根据所给段和偏移地址的到的是不当的地址
  *ERROR122:CANNOT FIND MODULE
  MODULE:file_name(modulename)
  命令行所给的模块未能找到
  L51 致命错误
  *FATAL ERROR201:INVALID COMMAND LINE SYNTAX
  Partial command line
  命令行句法错。命令行显示到出错处。
  *FATAL ERROR202:INVALID COMMAND LINE ,TOKEN TOO LONG
  Partial command line
  非法命令行,单词太长。命令行显示到出错处
  *FATAL ERROR203:EXPECTED ITEM MISSING
  Partial command line
  缺项。命令行显示到出错处。
  *FATAL ERROR204:INVALID KEYWORD
  Partial command line
  非法关键字
  *FATAL ERROR205:CONSTANT TOO LONG
  Partial command line
  常量大于0xffff。命令行显示到出错处。
  *FATAL ERROR206:INVALID CONSTANT
  Partial command line
  命令行常量无效(如16 进制数以字母开头)。命令行显示到出错处。
  *FATAL ERROR207:INVALID NAME
  Partial command line
  模块名或段名无效。命令行显示到出错处。
  *FATAL ERROR208:INVALID FILENAME
  Partial command line
  文件名无效。命令行显示到出错处。
  *FATAL ERROR209:FILE USED IN CONLICTING CONTEXTS
  FILE:filename
  所给的文件名用于有矛盾之处。命令行显示到出错处。
  *FATAL ERROR210:I/O ERROR ON INPUT FILE
  System error message
  FILE:filename
  访问输入文件时检测到有错,并有后面的EXCEPTION 给出具体的错误描述
  *FATAL ERROR211:I/O ERROR ON OUTPUT FILE
  System error message
  FILE:filename
  访问输出文件时检测到有错,并有后面的EXCEPTION 给出具体的错误描述
  *FATAL ERROR212:I/O ERROR ON LISTING FILE
  System error message
  FILE:filename
  访问列表文件时检测到有错,并有后面的EXCEPTION 给出具体的错误描述
  *FATAL ERROR213:I/O ERROR ONWORK FILE
  System error message
  FILE:filename
  访问工作文件时检测到有错,并有后面的EXCEPTION 给出具体的错误描述
  *FATAL ERROR214:I/O INPUT PHASE ERROR
  MODULE:filename(modulename)
  L51 在进行第二次扫描时遇到不同的数据发生该错误,可能是因汇编错误引起
  *FATAL ERROR215:CHECK SUM ERROR
  MODULE:filename(modulename)
  校验和与文件内容不一致
  *FATAL ERROR216:INSUFFICIENTMEMORY
  MODULE:filename(modulename)
  执行L51 的内存空间不够
  *FATAL ERROR217:NO MODULE TO BE PROCESSED
  缺少应该被处理的模块
  *FATAL ERROR218:NOTAN OBJECT FILE
  FILE:filename
  所给文件非目标文件
  *FATAL ERROR219:NOTAN 8051 OBJECT FILE
  FILE:filename
  所给文件非8051 目标文件
  *FATAL ERROR220:INVALID INPUTMODULE
  FILE:filename
  所给输入模块无效,可能是由汇编错误引起的
  *FATAL ERROR221:MODULE SPECIFIED MORE THAN ONCE
  Partial command line
  命令行上多次包含同一模块。命令行显示到出错处
  *FATAL ERROR222:SEGMENT SPEXIFIED MORE THAN ONCE
  Partial command line
  命令行上多次包含同一段。命令行显示到出错处
  *FATAL ERROR224:DUPLICATE KEYWORD OR CONFLICATING CONTROL
  Partial command line
  命令行上多次包含同一关键字或者存在相互矛盾的控制选项。命令行显示到出错处
  *FATAL ERROR225:SEGMENTADDRESS ARE NOT IN ASCENDING ORDER
  Partial command line
  定位控制的段地址未按照升序显示。命令行显示到出错处
  *FATAL ERROR226:SEGMENTADDRESS INVALID FOR CONTROL
  Partial command line
  定位控制的段的段地址无效。命令行显示到出错处
  *FATAL ERROR227:PARAMETER OUT RANGE
  Partial command line
  所给PAGEWIDTH 和PAGELENGTH 参数越界。命令行显示到出错处
  *FATAL ERROR228:PARAMETER OUT RANGE
  Partial command line
  命令行上RAMSIZE 参数越界。命令行显示到出错处
  *FATAL ERROR229:INTERAL PROCESS ERROR
  Partial command line
  L51 检测到内部处理错。请询问代理商
  *FATAL ERROR230:STRARTADDRESS SPECIFIED MORE THAN ONCE
  Partial command line
  命令行上包含多个未命名组段的起始地址。命令行显示到出错处
  *FATAL ERROR233:ILLEGAL USE OF *IN OVERLAY CONTROL
  Partial command line
  命令行OVERLAY 定位选择非法使用了*号(如*!*或*~*)。命令行显示到出错处
  E.5 异常信息
  L51 某些错误的原因由系统的EXCEPTION 给出。
  *EXCEPTION 0021:PATH OR FILE NOT FOUND
  路径名或文件名未找到。
  *EXCEPTION 0026H:ILLEGAL FILE ACCESS
  试图写或者删除写保护文件。
  *EXCEPTION 0029H:ACCESS FILE DENIED
  所给的文件实际是目录。
  *EXCEPTION 002AH:I/O-ERROR
  欲写的驱动器已满或未准备好。
  *EXCEPTION 0101H:ILLEGAL CONTEXT
  命令行的语意非法。如对打印机进行读操作。
  附录 F C51的极限值
  *标示符最长255 个字符,一般取32 字符。大小写不敏感。
  *case语句的变量个数没有限制,仅受可用内存容量和函数的最大长度限制。
  *函数嵌套调用最大深度为10。
  *功能块{….}最大嵌套深度为15。
  *宏最多嵌套为8。
  *函数以及宏的参数最多为32个。
  *语句行和宏定义最多510 个字符(宏扩展后是510个字符)
  *头文件嵌套深度为20。
  *预处理器中的条件编译层最多为20。
  *关于INTEL目标模块格式(OMF-51)的极限值。
  *函数类型段总和最多256 个。
  *全局符号(PUBLIC)最多256 个。
  *外部符号(EXTERNAL)最多256 个。

猜你喜欢

转载自flf592ap.iteye.com/blog/1359490
C51