Keil+C编译器常见警告与错误信息的解决方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

࢒໕ᐺࡇᇙቧᇦ

本章列出了编程中可能遇到的致命错误语法错误和警告信息每节包括一个信息

的主要说明和消除错误或警告条件可采取的措施

致命错误

致命错误立即终止编译这些错误通常是命令行指定的无效选项的结果当编译器不能访问一个特定的源包含文件时也产生致命错误

致命错误信息采用下面的格式

C51 FATAL-ERROR –

ACTION

LINE:

ERROR: C51 TERMIANTED.

C51 FATAL-ERROR –

ACTION

FILE:

ERROR: C51 TERMIANTED.

下面说明Action和Error中可能的内容

Actions

ALLOCATING MEMORY

编译器不能分配足够的存储区来编译指定的源文件

CREATING LIST-FILE / OBJECT-FILE / WORKFILE

编译器不能建立列表文件OBJ文件或工作文件这个错误的出现可能是磁盘

满或写保护或文件已存在和只读

GENERATING INTERMEDIATE CODE

源文件包含的一个函数太大不能被编译器编译成虚拟代码尝试把函数分小或

重新编译

OPENING INPUT-FILE

编译器不能发现或打开所选的源或包含文件

PARSING INVOKE-/#PRAGMA-LINE

当在命令行检测到参数计算或在一个#pragma中检测到参数计算就产生这样

的错误

PARSING SOURCE-FILE/ANALYZING DECLARATIONS

源文件包含太多的外部参考减少源文件访问的外部变量和函数的数目

WRITING TO FILE

当写入列表文件OBJ文件或工作文件时遇到的错误

Errors

‘(‘ AFTER CONTROL EXPECTED

一些控制参数需要用括号包含一个参数当没有左括号时显示本信息

‘)’ AFTER PARAMETER EXPECTED

本信息表示包含没有参数的右括号

BAD DIGIT IN NUMBER

一个控制参数的数字参数包含无效字符只能是十进制数

CAN’T CREATE FILE

在FILE行定义的文件名不能建立

CAN’T HA VE GERERAL CONTROL IN INVOCATION LINE

一般控制例如EJECT不能包含在命令行把这些控制用#pragma声明放在

源文件中

FILE DOES NOT EXIST

没有发现定义在FILE行的文件

FILE WRITE-ERROR

因为磁盘空间不够写到列表预打印工作或目标文件时出错

IDENTIFIER EXPECTED

当DEFINE控制没有参数时产生本信息DEFINE要求一个参数作为标识符这和C语言的规则相同

MEMORY SPACE EXHAUSTED

编译器不能分配足够的存储区来编译指定的源文件如果始终出现这个信息应

该把源文件分成两个或多个小文件再重新编译

MORE THAN100ERRORS IN SOURCE-FILE

在编译时检测到的错误超过100个这使编译器终止

MORE THAN256SEGMENTS/EXTERNALS

在一个源文件中的参考超过256个单个的源文件不能有超过256个函数或外部参考这是INTEL目标模块格式OMF-51的历史的限制包含标量和/或bit声明

的函数在OBJ文件中生成两个有时候三个段定义

NON-NULL ARGUMENT EXPECTED

所选的控制参数需要用括号包含一个参数例如一个文件名或一个数字

OUT OF RANGE NUMBER

一个控制参数的数字参数超出范围例如OPTIMIZE控制只允许数字0到6值

7就将产生本错误信息

PARSE STACK OVERFLOW

解析堆栈溢出如果源程序包含很复杂的表达式或如果块的嵌套深度超过31级

就会出现这个错误

PREPROCESSOR LINE TOO LONG32K

一个中间扩展长度超过32K字符

PREPROCESSOR MACROS TOO NESTED

在宏扩展期间预处理器所用的堆栈太大这个信息通常表示一个递归的宏定义但也可表示一个宏嵌套太多

RESPECIFIED OR CONFLICTING CONTROL

一个命令行参数指定了两次或命令行参数冲突

SOURCE MUST COME FROM A DISK-FILE

源和包含文件必须存在控制台CON CI或类似的设备不能作为输入文件

UNKNOWN CONTROL

所选的控制参数不认识

语法和语义错误

语法和语义错误一般出现在源程序中它们确定实际的编程错误当遇到这些错误时

编译器尝试绕过错误继续处理源文件当遇到更多的错误时编译器输出另外的错误

信息但是不产生OBJ文件

语法和语义错误在列表文件中生成一条信息这些错误信息用下面的格式

*** ERROR number IN LINE line OF file:error message

这里

number错误号

line对应源文件或包含文件的行号

file产生错误的源或包含文件名

error message对错误的叙述说明

下表按错误号列出了语法和语义错误错误信息列出了主要说明和可能的原因和改正

100跳过不可打印字符0x??

在源文件中发现一个非法字符注意不检查注释中的字符

101字符串没结束

一个字符串没有用双引号终止

102字符串太长

一个字符串不能超过4096个字符用串联符号\在逻辑上可延长字符串

超过4096个字符这个模式的行终止符在词汇分析时是连续的

103无效的字符常数

一个字符常数的格式无效符号\c是无效的除非c是任何可打印的ASCII

字符

125声明符太复杂20

一个目标的声明可包含最多20个类型修饰符[]*这

个错误经常伴随着错误126

相关文档
最新文档