您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Keil中的常见错误和警告
Keil中的常见错误和警告李友全编辑整理大家若发现有这里查不出的错误或警告请在群里通知我C51编译器识别错类型有三种1、致命错误:伪指令控制行有错、命令行指定的无效选项、访问不存在的原文件或头文件等。致命错误立即终止程序编译。2、语法及语义错误:语法和语义错误都发生在源文件中。有这类错误时,给出提示但不产生目标文件,错误超过一定数量才终止编译。3、警告:警告出现并不影响目标文件的产生,但执行时有可能发生问题,程序员应斟酌处理。错误信息及可能发生的原因列表*ERROR100:unprintablecharacter0x??skipped源文件中发现非法字符(注意,注解内的字符不做检查)。*ERROR101:unclosedstring字符串未用引号结尾。*ERROR102:stringtoolong字符串不得超过511个字符。为了定义更长的串,用户必须使用续行符‘\’逻辑的继续该字符串,在词汇分析时遇到以该符号结尾的行会与下行连接起来.*ERROR103:invalidcharacterconstant试图再声明一个已定义的宏,已存在的宏可以用#undef指令删除。预定义的宏不能删除。*ERROR104:identifierexpected预处理器指令期望产生一个标示符,如ifdefname。*ERROR105:unclosedcomment当注解无结束界定符(*/)时产生此错误。*EROOR106:unbalanced#if-endifcontrolsendif的数量与if或ifdef的数量不匹配。*ERROR107:includefilenestingexceeds9include指令后的文件名无效或丢失*ERROR108:expectedstring,如#error“string”预处理器指令期望一个串变量。*ERROR109:usererrortext由#error伪指令引入的错误信息以错误信号形式显示。*ERROR110:missingdirective预处理行#后缺少伪指令。*ERROR111:unknowndirective预处理行#后不是伪指令。*ERROR112:misplaced‘elif’*ERROR113:misplaced‘else’*ERROR114:misplaced‘endif’指令elif/else/endif只有在if、ifdef、ifndef指令内才是合法的。*ERROR117:badintegerexpressionif/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函数参数的存储类由存储模式(SMALLLARGECOMPACT)决定用户不能改变,使用不同于存储模式的自动变量应该为静态的存储类*ERROR129:missing’;’before‘token’该错误表示分号丢失,通常该错误会引发一连串的错误,引发的这些错误无关紧要。因为缺少分号后编译器不能做正确的语法分析*ERROR130:valueoutofrangeusing或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:NEARtoken:expectedtoken编译器所见的单词是错误的。期望正确的单词*ERROR142:invalidbaseaddressSfr说明中的基址有错。有效基址为0x80-0xff。如果声明采用base^pos形式,则基址是8的整数倍*ERROR143:invalidabsolutebitpositionSbit说明中位地址必须在0x80-0xff之间*ERROR144:base^pos:invalidbitpositionSbit说明中位pos必须在0~7之间*ERROR145:undeclaredsfrSfr未说明*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:alienpermittedonfunctiononlyAlien只能用于函数*ERROR157:var_parmsonalienfunction有变参数的函数不能用alien,因为PL/M51函数只能用固定数量的参数*ERROR158:functioncontainsunnamedparameter函数定义的参数表中包含无名参数。无名参数只允许用于函数的原型中*ERROR159:typefollowsvoid函数原型声明中可含一个空的参数表f(void)。Void后不能再用其他类型定义*ERROR160:voidinvalidVoid类型只能与指针合用或表明函数没有返回值*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:missingenclosingswithBreak/continue语句只能出现在for,while,dowhile或switch语句中间。*ERROR172:missingenclosingswithCase语句只能用在switch语句中*ERROR173:missingreturn-expression返回类型不是integer的函数必须包含一条代表达式的return语句。由于要与老版本兼容,编译器对返回整形值的函数不做检查*ERROR174:return-expressiononvoid-functionVoid函数不能返回值,因此不能包含带表达式return的语句*ERROR175:duplicatecasevalue每个case语句必须包含一个常量表达式做其变量,这个值不能在switch语句的各级中出现多次*ERROR176:morethanonedefaultSwitch语句中不能包含多于一个的default语句*ERROR177:differentstruct/union赋值或参数传递中使用了结构/联合的不同类型*ERROR178:struct/unioncomparisonillegal根据ANSIC,两个结构或联合的比较是不允许的*ERROR179:cannot/castfrom/tovoid-type将void类型转化为其他类型数据或将其他类型转化为void类型都是非法的*ERROR180:cannotcastt
本文标题:Keil中的常见错误和警告
链接地址:https://www.777doc.com/doc-4038699 .html