分享
分享赚钱 收藏 举报 版权申诉 / 15

类型keil4错误信息整合.doc

  • 上传人:hwpkd79526
  • 文档编号:7232984
  • 上传时间:2019-05-10
  • 格式:DOC
  • 页数:15
  • 大小:120.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    keil4错误信息整合.doc
    资源描述:

    1、第七章 错误信息本章列出了编程中可能遇到的致命错误语法错误和警告信息每节包括一个信息的主要说明和消除错误或警告条件可采取的措施致命错误致命错误立即终止编译这些错误通常是命令行指定的无效选项的结果当编译器不能访问一个特定的源包含文件时也产生致命错 误致命错误信息采用下面的格式C51 FATAL-ERROR ACTION LINE: ERROR: C51 TERMIANTED.C51 FATAL-ERROR ACTION FILE: ERROR: C51 TERMIANTED.下面说明Action和Error中可能的内容Keil Software Cx51 编译器用户手册第七章错误信息 190Ac

    2、tionsALLOCATING MEMORY编译器不能分配足够的存储区来编译指定的源文件CREATING LIST-FILE / OBJECT-FILE / WORKFILE编译器不能建立列表文件OBJ文件或工作文件这个错误的出现可能是磁盘满或写保护或文件已存在和只读GENERATING INTERMEDIATE CODE源文件包含的一个函数太大不能被编译器编译成虚拟代码尝试把函数分小或重新编译OPENING INPUT-FILE编译器不能发现或打开所选的源或包含文件PARSING INVOKE-/#PRAGMA-LINE当在命令行检测到参数计算或在一个#pragma 中检测到参数计算就产生这

    3、样的错误PARSING SOURCE-FILE / ANALYZING DECLARATIONS源文件包含太多的外部参考减少源文件访问的外部变量和函数的数目WRITING TO FILE当写入列表文件OBJ文件或工作文件时遇到的错误Keil Software Cx51 编译器用户手册第七章错误信息 191Errors( AFTER CONTROL EXPECTED一些控制参数需要用括号包含一个参数当没有左括号时显示本信息) AFTER PARAMETER EXPECTED本信息表示包含没有参数的右括号BAD DIGIT IN NUMBER一个控制参数的数字参数包含无效字符只能是十进制数CANT

    4、 CREATE FILE在FILE行定义的文件名不能建立CANT HAVE GERERAL CONTROL IN INVOCATION LINE一般控制例如EJECT 不能包含在命令行把这些控制用#pragma声明放在源文件中FILE DOES NOT EXIST没有发现定义在FILE行的文件FILE WRITE-ERROR因为磁盘空间不够写到列表预打印工作或目标文件时出错IDENTIFIER EXPECTED当DEFINE控制没有参数时产生本信息DEFINE要求一个参数作为标识符这和C语言的规则相同MEMORY SPACE EXHAUSTED编译器不能分配足够的存储区来编译指定的源文件如果始

    5、终出现这个信息应该把源文件分成两个或多个小文件再重新编译MORE THAN 100 ERRORS IN SOURCE-FILE在编译时检测到的错误超过100个这使编译器终止MORE THAN 256 SEGMENTS/EXTERNALS在一个源文件中的参考超过256个单个的源文件不能有超过256个函数或外部参考这是INTEL目标模块格式OMF-51 的历史的限制包含标量和/ 或bit声明的函数在OBJ文件中生成两个有时候三个段定义Keil Software Cx51 编译器用户手册第七章错误信息 192NON-NULL ARGUMENT EXPECTED所选的控制参数需要用括号包含一个参数例如

    6、一个文件名或一个数字OUT OF RANGE NUMBER一个控制参数的数字参数超出范围例如OPTIMIZE控制只允许数字0到6 值7就将产生本错误信息PARSE STACK OVERFLOW解析堆栈溢出如果源程序包含很复杂的表达式或如果块的嵌套深度超过31级就会出现这个错误PREPROCESSOR LINE TOO LONG 32K一个中间扩展长度超过32K字符PREPROCESSOR MACROS TOO NESTED在宏扩展期间预处理器所用的堆栈太大这个信息通常表示一个递归的宏定义但也可表示一个宏嵌套太多RESPECIFIED OR CONFLICTING CONTROL一个命令行参数指

    7、定了两次或命令行参数冲突SOURCE MUST COME FROM A DISK-FILE源和包含文件必须存在控制台CON CI 或类似的设备不能作为输入文件UNKNOWN CONTROL所选的控制参数不认识Keil Software Cx51 编译器用户手册第七章错误信息 193语法和语义错误语法和语义错误一般出现在源程序中它们确定实际的编程错误当遇到这些错误时编译器尝试绕过错误继续处理源文件当遇到更多的错误时编译器输出另外的错误信息但是不产生OBJ文件语法和语义错误在列表文件中生成一条信息这些错误信息用下面的格式* ERROR number IN LINE line OF file:err

    8、or message这里number 错误号line 对应源文件或包含文件的行号file 产生错误的源或包含文件名error message 对错误的叙述说明下表按错误号列出了语法和语义错误错误信息列出了主要说明和可能的原因和改正号错误信息和说明100 跳过不可打印字符0x?在源文件中发现一个非法字符注意不检查注释中的字符101 字符串没结束一个字符串没有用双引号终止102 字符串太长一个字符串不能超过4096个字符用串联符号 在逻辑上可延长字符串超过4096个字符这个模式的行终止符在词汇分析时是连续的103 无效的字符常数一个字符常数的格式无效符号c 是无效的除非c是任何可打印的ASCII字

    9、符125 声明符太复杂20一个目标的声明可包含最多20个类型修饰符 * 这个错误经常伴随着错误126Keil Software Cx51 编译器用户手册第七章错误信息 194号错误信息和说明126 类型堆栈下溢类型声明堆栈下溢这个错误通常死错误125的副产品127 无效存储类一个目标用一个无效的存储空间标识符声明如果一个目标在一个函数外用存储类auto或register声明就会产生本错误129 在标记前缺少本错误通常表示前一行缺少分号当出现本错误时编译器会产生很多错误信息130 值超出范围在一个using或interrupt标识符后的数字参数是无效的using标识符要求一个0到3之间的寄存器组

    10、号interrupt标识符要求一个0到31之间的中断矢量号131 函数参数重复一个函数有相同的参数名在函数声明中参数名必须是唯一的132 没在正式的参数列表一个函数的参数声明用了一个名称没在参数名列表中例如char function(v0,v1,v2)char *v0,*v1,*v5;/* v5没在正式列表中 */* */134 函数的xdata/idata/pdata/data不允许函数通常位于code存储区不能在别的存储区运行函数默认定义为存储类型code135 bit的存储类错bit标量的声明可能包含一个static或extern存储类register 或alien类是无效的136 变量

    11、用了voidvoid类型只允许作为一个不存在的返回值或一个函数的空参数列表voidfunc(void) 或和一个指针组合void *138 Interrupt()不能接受或返回值一个中断函数被定义了一个或多个正式的参数或一个返回值中断函数不能包含调用参数或返回值140 位在非法的存储空间bit标量的定义可以包含可选的存储类型data 如果没有存储类型则默认为data 因为位通常在内部数据存储区当试图对一个bit标量定义别的数据类型时会产生本错误141 临近标志语法错误期待别的标志编译器所见的标志是错误的参考所显示的期待的内容142 无效的基地址一个sfr或sbit声明的基地址是错误的有效的基地

    12、址范围在0x80到0xFF 之间如果用符号基地址位号声明则基地址必须是8的倍数Keil Software Cx51 编译器用户手册第七章错误信息 195号错误信息和说明143 无效的绝对位地址sbit声明中的绝对位地址必须在0x80到0xFF之间144 基地址 位号无效的位号sbit声明中定义的位号必须在0到7之间145 未知的sfr146 无效sfr一个绝对位基地址位号的声明包含一个无效的基地址标识符基地址必须是已经声明的sfr 任何别的名称是无效的147 目标文件太大单个目标文件不能超过65535 64K 字节-1149 struct/union包含函数成员struct或union不能包含

    13、一个函数类型的成员但是指向函数的指针是可以的150 struct/union包含一个bit成员一个union不能包含bit类型成员这是8051的结构决定的151 struct/union自我关联一个结构不能包含自己152 位号超出位域位域声明中指定的位号超过给定基类的位号153 命名的位域不能为零命名的位域为零只要未命名的位域允许为零154 位域指针指向位域的指针不允许155 位域要求char/int位域的基类要求char或int unsigned char和unsigned int 类型也行156 alien只允许对函数157 alien函数带可变参数存储类alien只对外部PL/M-51函

    14、数允许符号cha r *, 在alien函数中是非法的PL/M-51函数通常要求一个固定的参数表158 函数包含未命名的参数一个函数的参数列表定义包含一个未命名的抽象类型定义这个符号只允许在函数原型中159 void后面带类型函数的原型声明可包含一个空参数列表例如int func(void) 在void 后不能再有类型定义160 void无效void类型只在和指针组合或作为一个函数的不存在的返回值中是合法的161 忽视了正式参数在一个函数内一个外部函数的声明用了一个没有类型标识符的参数名列表例如extern yylex(a,b,c);Keil Software Cx51 编译器用户手册第七章错

    15、误信息 196号错误信息和说明180 不能指向一个函数指向一个函数的类型是无效的尝试用指针指向一个函数181 操作数不兼容对给定的操作符至少一个操作数类型是无效的例如float_type183 左值不能修改要修改的目标位于code存储区或有const 属性因此不能修改184 sizeof 非法操作数sizeof操作符不能确定一个函数或位域的大小185 不同的存储空间一个目标声明的存储空间和前一个同样目标声明的存储空间不同186 解除参照无效一个内部编译器问题会产生本信息如果本错误重复出现请和技术支持接洽187 不是一个左值所需的参数必须是一个可修改的目标地址188 未知目标大小因为没有一个数组

    16、的维数或间接通过一个void指针一个目标的大小不能计算189 int xdata i; ;产生错误258struct v1char c;int xdata *i; ;是正确的struct声明259 指针不同的存储空间一个空指针被关联到别的不同存储空间的空指针例如char xdata *p1;char idata *p2;p1 = p2; /* 不同的存储空间 */260 指针断开一个空指针被关联到一些常数值这些值超过了指针存储空间的值范围例如char idata *p1 = 0x1234; /* 结果是0x34 */Keil Software Cx51 编译器用户手册第七章错误信息 201号错

    17、误信息和说明261 reentrant()内有bit一个可重入属性的函数的声明中不能包含bit目标例如int func1(int i1) reentrant bit b1,b2; /* 不允许 */return(i1-1);262 using/disable 不能返回bit值用using属性声明的函数和禁止中断#pragma disable 的函数不能返回一个bit值给调用者例如bit test(void) using 3bit b0;return(b0);产生错误262263 保存/恢复堆栈保存溢出 /下溢#pragma save的最大嵌套深度是八级堆栈的pragma save 和resto

    18、re工作根据LIFO 后进先出规则264 内在的 声明/ 激活错误本错误表示一个内在的函数错误定义参数数目或省略号如果用标准的.H文件就不会产生本错误确认使用了Cx51所有的.H 文件不要尝试对内在的库函数定义自己的原型265 对非重入函数递归调用非重入函数不能被递归调用因为这样会覆盖函数的参数和局部数据如果需要递归调用需声明函数为可重入函数267 函数定义需要ANSI类型的原型一个函数被带参数调用但是声明是一个空的参数列表原型必须有完整的参数类型这样编译器就可能通过寄存器传递参数和适合应用的调用机制268 任务定义错误任务ID/优先级/using任务声明错误271 asm/endasm 控制

    19、放错地方asm和endasm声明不能嵌套endasm要求一个汇编块前面用asm开头例如#pragma asm.汇编指令. #pragma endasmKeil Software Cx51 编译器用户手册第七章错误信息 202号错误信息和说明272 asm 要求激活SRC控制在一个源文件中使用asm和endasm 要求文件用SRC 控制编译那么编译器就会生成汇编源文件然后可以用A51 汇编273 asm/endasm 在包含文件中不允许在包含文件中不允许asm和endasm 为了调试在包含文件不能有任何的可执行代码274 非法的绝对标识符绝对地址标识符对位目标函数和局部函数不允许地址必须和目标的

    20、存储空间一致例如下面的声明是无效的因为间接寻址的范围是0x00到0xFFidata int _at_ 0x1000;278 常数太大当浮点参数超出32位的浮点值范围就产生本错误32位IEEE值的范围是1.175494E-38到3.402823E+38279 多次初始化试图多次初始化一个目标280 没有使用符号/标号/参数在一个函数中声明了一个符号标号或参数但没有使用281 非指针类型转换为指针引用的程序目标不能转换成一个指针282 不是一个SFR引用本函数调用要求一个SFR作为参数283 asmparms 参数不适合寄存器参数不适合可用的CPU寄存器Keil Software Cx51 编译器

    21、用户手册第七章错误信息 203284 在可覆盖空间函数不再可重入一个可重入函数包含对局部变量的明确的存储类型标识符函数不再完全可重入300 注释未结束一个注释没有一个结束符*/301 期望标识符一个预处理器命令期望一个标识符302 误用#操作符字符操作符# 没有带一个标识符303 期望正式参数字符操作符# 没有带一个标识符表示当前所定义的宏的一个正式参数名304 错误的宏参数列表宏参数列表没有一个大括号逗号分开的标识符列表305 string/char 常数未结束一个字符串活字符常数是无效的典型的后引号丢失306 宏调用未结束预处理器在收集和扩展一个宏调用的实际的参数时遇到输入文件的结尾Kei

    22、l Software Cx51 编译器用户手册第七章错误信息 204号错误信息和说明307 宏名称参数计算不匹配在一个宏调用中实际的参数数目和宏定义的参数数目不匹配本错误表示指定了太少的参数308 无效的整数常数表达式一个if/elif 命令的数学表达式包含一个语法错误309 错误或缺少文件名在一个include 命令中的文件名参数是无效的或没有310 条件嵌套过多20源文件包含太多的条件编译嵌套命令最多允许20 级嵌套311 elif/else 控制放错地方312 endif 控制放错地方命令elif else 和endif 只有在if ifdef 或ifndef 命令中是合法的313 不能

    23、清除预定义的宏名称试图清除一个预定义宏用户定义的宏可以用#undef 命令删除预定义的宏不能清除314 #命令语法错误在一个预处理器命令中字符# 必须跟一个新行或一个预处理器命令名例如if/define/ifdef 315 未知的#命令名称预处理器命令是未知的316 条件未结束到文件结尾endif 的数目和if 或ifdef 的数目不匹配318 不能打开文件文件名指定的文件不能打开319 文件不是一个磁盘文件指定的文件不是一个磁盘文件文件不能编辑320 用户自定义的内容本错误号未预处理器的#error 命令保留#error 命令产生错误号320送出用户定义的错误内容终止编译器生成代码321 缺少在一个include 命令的文件名参数中缺少结束符例如#include fooKeil Software Cx51 编译器用户手册第七章错误信息 208号警告信息和说明324 期望预处理器记号期望一个预处理器记号但输入的是一个新行例如#line 这里缺少#line 命令的参数Keil_

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:keil4错误信息整合.doc
    链接地址:https://www.docduoduo.com/p-7232984.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开