keil编译错误提示.docx

上传人:b****7 文档编号:11423824 上传时间:2023-03-01 格式:DOCX 页数:26 大小:30.68KB
下载 相关 举报
keil编译错误提示.docx_第1页
第1页 / 共26页
keil编译错误提示.docx_第2页
第2页 / 共26页
keil编译错误提示.docx_第3页
第3页 / 共26页
keil编译错误提示.docx_第4页
第4页 / 共26页
keil编译错误提示.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

keil编译错误提示.docx

《keil编译错误提示.docx》由会员分享,可在线阅读,更多相关《keil编译错误提示.docx(26页珍藏版)》请在冰豆网上搜索。

keil编译错误提示.docx

keil编译错误提示

C51编译器识别错类型有三种

1、致命错误:

伪指令控制行有错,访问不存在的原文件或头文件等。

2、语法及语义错误:

语法和语义错误都发生在原文件中。

有这类错误时,给出提示但不产生目标文件,错误超过一定数量才终止编译。

3、警告:

警告出现并不影响目标文件的产生,但执行时有可能发生问题。

程序员应斟酌处理。

D.1致命错误

C_51FATAL_ERROR

ACTION:

<当前行为>

LINE:

<错误所在行>

ERROR:

<错误信息>terminated

或C_51FATALERROR

ACTION:

<当前行为>

FILE:

<错误所在文件>

ERROR:

<错误信息>terminated

C_51TERMINATEDC_51

(1)ACTION的有关信息

*PARSINGINVOKE-/#PRAGMA_LINE

在对#pragma指明的控制行作此法分析时出错。

*ALLOCATINGMEMORY系统分配存储空间时出错。

编译较大程序需要512k空间。

*OPENINGINPUT_FILE打开文件时,未找到或打不开源文件/头文件。

*CREATELIST_FILE/OBJECT_FILE/WORK_FILE不能创建上述文件。

可能磁盘满或文件已存在而且写保护。

*PARSINGSOURCE_FILE/ANALYZINGDECLARATIONS分析源程序时发现外部引用名太多。

*GENERATINGINTERMEDIATECODE源代码被翻译成内部伪代码,错误可能来源于函数太大而超过内部极限。

*WRITINGTOFILE

在向文件(work,list,prelist或objectfile)写时发生错误。

(2)ERROR的有关信息

*MEMORYSPACEEXHAUSTED所有可用系统空间耗尽。

至少需要512k字节空间。

没有足够空间,用户必须检查常驻内存的驱动程序是否太多。

*FILEDOESNOTEXIST

FILE行定的文本文件名未发现。

*CAN'TCREATFILE

FILE行定义的文件不能被创建。

*SOURCEMUSTCOMEFROMADISK_FILE源文件和头文件必须存在于硬盘或软盘上。

控制台、CON、CI或类似设备不允许作为输入

文件。

*MORETHAN256SEGMENTS/PUBLICS/EXTERNALS

受OMF_51的历史限制,一个源程序不能超过256个各种函数的类型段,256个全局变量,256个公共定义或外部引用名。

不使用为变量可以减少使用的段数。

使用static存储类型说明符可减少全局变量的使用数目。

合理调整定义性说明的位置可减少外部引用名的使用数目。

*FILEWRITEERROR

当向list、prelist、work或object文件中写内容时,由于空间不够而发生错误。

*NON_NULLARGUMENTEXPECTED所选的控制参数需要一个括号内的变量,如一个文件夹或一个数。

*“(”AFTERCONTROLEXPECTED变量的左括号丢失。

*“)”AFTERPARAMETEREXPECTED变量的右括号丢失。

*RESPECIFIEDORCONFLICTINGCONTROL所选的控制参数与前面发生冲突或重复,例如CODE和NOCOND

*BADDECIMALNUMBER

控制参数的数字含有非法数,需要使用十进制数。

*OUTOFRANGEDECIMALNUMBER控制参数的数字越界,例如OPTIMIZE的参量为0-5。

*IDENTIFIEREXPECTED

控制参数DEFINE需要一个标识符做参量,与C语言的规则相同。

*PARSESTACKOVERFLOW分析栈溢出。

可能是源程序包含特别复杂的表达式,或功能块嵌套数超过15。

*PREPOCESSOR:

MACROTONESTED

宏扩展期间,预处理器的栈耗用太大。

表明宏嵌套太多,或有递归宏定义。

*PREPOCESSOR:

LINETOOLONG(510)

宏扩展后行超过510个字符。

*CAN'THAVEGENERALCONTROLININVOACTIONLINE

一般控制(如EJECT)不能是命令行的一部分,应将它们放入源文件“pragma”预处理行中。

D.2语法及语义错误

D.2.1错误格式这类错误在列表文件中产生如下格式的信息:

***ERRORINLINEOF:

errormessage***WARINGINLINEOF:

warningmessage表示错误行;

表示源文件或头文件中与错误或警告相关的行;

指明了错误所在的源文件或头文件;

D.2.2错误信息及可能发生的原因

*ERROR100:

unprintablecharacter0x?

?

skipped源文件中发现非法字符(注意,注解内的字符不做检查)

*ERROR101:

unclosedstring串未用引号结尾。

*ERROR102:

stringtoolong

'逻辑的继续该串,

串不得超过511个字符。

为了定义更长的串,用户必须使用续行符‘在词汇分析时遇到以该符号结尾的行会与下行连接起来。

*ERROR103:

invalidcharacterconstant试图再声明一个已定义的宏,已存在的宏可以用#undef指令删除。

预定义的宏不能删除。

*ERROR104:

identifierexpected预处理器指令期望产生一个标示符,如ifdef

*ERROR105:

unclosedcomment当注解无结束界定符(*/)时产生此错误。

*EROOR106:

unbalanced#if-endifcontrolsendif的数量与if或ifdef的数量不匹配。

*ERROR107:

includefilenestingexceeds9include指令后的文件名无效或丢失

*ERROR108:

expectedstring,如#error“string”

预处理器指令期望一个串变量。

*ERROR109:

由#error伪指令引入的错误信息以错误信号形式显示。

*ERROR110:

missingdirective

预处理行#后缺少伪指令。

*ERROR111:

unknowndirective

预处理行#后不是伪指令。

*ERROR112:

misplaced‘elif'

*ERROR113:

misplaced‘else'

*ERROR114:

misplaced‘endif'

指令elif/else/endif只有在if、ifdef、ifndef指令内才是合法的。

*ERROR117:

badintegerexpression

if/elif指令的数值表达式有语法错误。

*ERROR118:

missing'(‘aftermacroidentifier宏调用中实参表的左括号丢失

*ERROR119:

reuseofmacroformalparameter宏定义形参名重复使用

*ERROR120:

‘C'unexpectedinformallist形参表中不允许有字符‘c',应用逗号代替

*ERROR121:

missing‘)'afteractualparameter宏调用实参表的右括号丢失

*ERROR122:

illegalmacroinvocation宏调用的实参表与宏定义中的形参表不同

*ERROR123:

missingmacronameafter‘define'

#define伪指令后缺预定义的宏

*ERROR124:

expectedmacroformalparameter宏定义要求形参名

*ERROR125:

declaratertoocomplex

说明过于复杂

*ERROR126:

type-stackunderflow

对象的声明至多只能包含20个类型修饰符(【】,*,(),)错误126经常在错误125之前,两者一起发生。

*ERROR127:

invalidstorageclass对象用无效的存储类所说明。

当在函数外用auto/register存储时会发生这种情况。

*ERROR128:

memoryspace:

illegalmemoryspace‘memoryspace'used

函数参数的存储类由存储模式(SMALLLARGECOMPA)CT决定用户不能改变,使用不同于存储模式的自动变量应该为静态的存储类

*ERROR129:

missing';'before‘token'

该错误表示分号丢失,通常该错误会引发一连串的错误,引发的这些错误无关紧要。

因为缺少分号后编译器不能做正确的语法分析

*ERROR130:

valueoutofrange

using或interrupt指令后参数越限。

using用的寄存器组号位0-3,interrupt需要0-15的中断号

*ERROR131:

duplicatefunction-parameter函数中形参名重复,形参名应彼此不同

*ERROR132:

notinformalparameterlist函数内参数声明使用的名字未出现在参数表中

*ERROR133:

charfunction(v0,v1,v2)

Char*v0,*v1,*v5;/*'v5'在形参中未出现

*ERROR134:

xdata/idata/pdata/dataonfunctionnotpermitted函数总是驻留于0x5xxxx的code存储区,不能位于xdata/idata/pdata/data空间

*ERROR135:

badstorageclassforbit位变量的定义可以接受static或extern的存储类,用REGIESTER和ALIEN都是非法的

*ERROR136:

‘void'onvariable

‘void'类型只允许作为函数的返回类型或与指针类型合用(void*)

*ERROR137:

illegalparametertype:

'function'

函数参数的类型不能是函数,然而函数指针可以作为参数

*ERROR138:

interrupt()maynotreceiveorreturnvalue(s)中断函数既不能有参数又不能有返回值

*ERROR139:

illegaluseof‘alien'

关键字alien将函数定义为PL/M51规定的过程与函数结构。

这意味着C函数中有参数的缩记符号(即funct(⋯);)时是不能用alien的

*ERROR140:

bitinillegalmemory-space位变量的定义可包含修饰符DATA,如果无修饰符则假定为DATA。

因为位变量始终位于0x4xxx的内部数据存储器中,当试图采用其他存储空间就会产生这个错误。

*ERROR141:

NEAR:

expected编译器所见的单词是错误的。

期望正确的单词

*ERROR142:

invalidbaseaddress

Sfr说明中的基址有错。

有效基址为0x80-0xff。

如果声明采用base^pos形式,则基址是8的整数倍

*ERROR143:

invalidabsolutebitposition

Sbit说明中位地址必须在0x80-0xff之间

*ERROR144:

base^pos:

invalidbitposition

Sbit说明中位pos必须在0~7之间

*ERROR145:

undeclaredsfr

Sfr未说明

*ERROR146:

invalidsfr

绝对位地址说明(base^pos)包含无效的基地址。

这个基地址必须与sfr名相对应

*ERROR147:

objecttoolarge

对象不能超过65536(64k)字节

*ERROR148:

fieldnotpermittedinunion联合不能包含位成员,这个限制是由8051结构决定的。

*ERROR149:

functionmemberinstruct/union结构或者联合不能包含函数类型的成员。

但是指向函数的指针是允许的

*ERROR150:

bitmemberinstruct/union结构或者联合不能包含位类型的成员,这个限制是由8051结构决定的

*ERROR151:

selfrelativestruct/union结构或者联合不能包含自身

*ERROR152:

bitfieldtypetoosmallfornumberofbits位域声明中指定的位数超过所给原型中位的数量

*ERROR153:

namedbit-fieldcannothave0width命名的域宽度为0错误,只有未命名的位域允许是0宽度

*ERROR154:

protofield无指向位域指针的类型

*ERROR155:

char/intrequiredforfields

位域基类型要求char或int类型,unsignedchar或unsignedint也有效

*ERROR156:

alienpermittedonfunctiononly

Alien只能用于函数

*ERROR157:

var_parmsonalienfunction

有变参数的函数不能用alien,因为PL/M51函数只能用固定数量的参数

*ERROR158:

functioncontainsunnamedparameter函数定义的参数表中包含无名参数。

无名参数只允许用于函数的原型中

*ERROR159:

typefollowsvoid

函数原型声明中可含一个空的参数表f(void)。

Void后不能再用其他类型定义

*ERROR160:

voidinvalid

Void类型只能与指针合用或表明函数没有返回值

*ERROR161:

formalparameterignored函数内的外部函数引用声明使用了无类型的参数表。

例如“extern(a,b,c);”要求形参表

*ERROR162:

duplicatefunction-parameter

函数内参数名重复

*ERROR163:

unknownarraysize

一般的不管是一维数组还是多维数组或外部数组,都需要指定数组的大小,这个大小是由编译器的初始化时计算,这个错误表明试图为一个未定维的数组使用sizeof运算符,会哦着

个多维数组的附加元素未定义。

*ERROR164:

ptrtonull

这一个错误通常是由前一个错误造成的

*ERROR165:

ptrtobit

指向位的指针不是合法的类型

*ERROR166:

arrayoffunction数组不能包含函数,但可能包含指向函数的指针。

*ERROR167:

arrayoffields位域不能安排为数组

*ERROR168:

arrayofbit数组没有位类型

*ERROR169:

functionreturnsfunction函数不能返回函数,但可以返回一个指向函数的指针

*ERROR170:

functionreturnsarray函数不能返回数组,但可返回指向数组的指针

*ERROR171:

missingenclosingswith

Break/continue语句只能出现在for,while,dowhile或switch语句中间。

*ERROR172:

missingenclosingswith

Case语句只能用在switch语句中

*ERROR173:

missingreturn-expression

返回类型不是integer的函数必须包含一条代表达式的return语句。

由于要与老版本兼容,

编译器对返回整形值的函数不做检查

*ERROR174:

return-expressiononvoid-function

Void函数不能返回值,因此不能包含带表达式return的语句

*ERROR175:

duplicatecasevalue

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

多次

*ERROR176:

morethanonedefault

Switch语句中不能包含多于一个的default语句

*ERROR177:

differentstruct/union赋值或参数传递中使用了结构/联合的不同类型

*ERROR178:

struct/unioncomparisonillegal

根据ANSIC,两个结构或联合的比较是不允许的

*ERROR179:

cannot/castfrom/tovoid-type

将void类型转化为其他类型数据或将其他类型转化为void类型都是非法的

*ERROR180:

cannotcastto'function'

转化为function是非法的,使用函数指针指向不同的函数

*ERROR181:

incompatibleoperand在所给的运算符中至少有一个操作符类型是无效的

*ERROR182:

pointtodifferentobject报告指针使用不一致

*ERROR183:

unmodifiablevalue预修改的对象位于CODE存储区,因而不能修改

*ERROR184:

sizeof:

illegaloperandSizeof运算符不能决定函数或位域大小

*ERROR185:

differentmemoryspace对象说明的存储空间与前面的不一致

*ERROR186:

invaliddereference这条错误信息可能由编译器内部问题产生的

*ERROR187:

notanlvalue所需参量必须是可变对象的地址

*ERROR188:

unknownobjectsize无法计算对象的大小,因为缺少数组的维数或因为通过void指针的间接访问

*ERROR189:

‘&'onbit/sfrillegal地址操作符‘&'不允许用于位对象或sfr

*ERROR190:

'&':

notanlvalue地质部是可变的对象,不能作为左值

*ERROR191:

‘&'onconstant试图为所列类型常数建立指针

*ERROR192:

‘&'onarray/function地址操作符&不允许用于数组或函数,函数和数组本身都代表了地址

*ERROR193:

illegalop-type(s)

*ERROR193:

illegaladd/subonptr

*ERROR193:

illegaloperationonbit(s)

*ERROR193:

badoperandtype当一个表达式使用给定运算符的非法操作类型时就会出现该错误,使用个定运算符的非法操作类型的无效的表达式,例如bit+bit,ptr+ptr,或ptr*

错误信息包括引起错误的运算符。

下列运算可使用位操作符

赋值(=)OR/复合OR(|,|=)AND/复合AND(&,&=)XOR/复合XOR(^,^=)位或常数的安位比较(==,!

=)取反(~)

*ERROR194:

'*'indirectiontoobjectofunknownsize间接操作符*不能用于void指针(void*),因为指针所指的对象的大小时未知的

*ERROR195:

'*'illegalindirection间接操作符*不能用于非指针变量

*ERROR196:

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

编译器对指针对象采用24bit(3字节),低16位表示偏移,高8位表示存储类的选择,在低字节中,值从1到5表明了xdata/pdata/idata/data/和code的存储类

*ERROR197:

illegalpointerassignment试图将一个非法变量赋给指针,只有另一个指针或指针变量可以赋给指针

*ERROR198:

sizeofreturnszero求某些对象长度得到0,如果对象是外部的或一个数组中并非所有维的大小都是已知时得到0,这时候该值可能是错的。

*ERROR199:

leftsizeof'->'requiresstruct/unionpointer

->操作符的左边变量必须是结构或变量

*ERROR200:

leftsizeof‘.'requiresstruct/union

操作符的左边变量必须是结构/联合

*ERROR201:

undefinedstruct/uniontag所给的结构/联合标记名是未知的

*ERROR202:

undefinedidentifier所给的标示符未定义

*ERROR203:

badstorageclass(nameref)该错误表示编译器的内部有问题

*ERROR204:

undefinedmember所给的结构/联合成员名未定义

*ERROR205:

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

*ERROR206:

missingfunction-prototype调用的函数缺少原型说明

*ERROR207:

declaredwith

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1