keil 错误 C51编译器鉴别错类型.docx
《keil 错误 C51编译器鉴别错类型.docx》由会员分享,可在线阅读,更多相关《keil 错误 C51编译器鉴别错类型.docx(34页珍藏版)》请在冰豆网上搜索。
keil错误C51编译器鉴别错类型
keil错误C51编译器鉴别错类型
C51编译器鉴别错类型有三种
1、致命差错:
伪指令操纵行有错,拜候不生活的原文件或头文件等。
2、语法及语义差错:
语法和语义差错都发生在原文件中。
有这类差错时,给出
提示但不出现标的目的文件,差错横跨肯定数量才终止编译。
3、戒备:
戒备出现并不影响标的目的文件的出现,但推行时有可能发生题目。
序次
员应商议经管。
D.1致命差错
C_51FATAL_ERROR
ACTION:
LINE:
ERROR:
terminconsumedd
或C_51FATALERROR
ACTION:
FILE:
ERROR:
terminconsumedd
C_51TERMINATEDC_51
(1)ACTION的有关音讯
*PARSINGINVOKE-/#PRAGMA_LINE
在对#pragma指明的操纵行作此法剖析时出错。
失去。
*ALLOCATINGMEMORY
体系分配存储空间时出错。
编译较大序次必要512k空间。
*OPENINGINPUT_FILE
掀开文件时,未找到或打不开源文件/头文件。
*CREATELIST_FILE/OBJECT_FILE/WORK_FILE
不能成立上述文件。
可能磁盘满或文件已生活而且写庇护。
*PARSINGSOURCE_FILE/ANALYZINGDECLARATIONS
剖析源序次时发掘外部援用名太多。
*GENERATINGINTERMEDIATECODE
源代码被翻译成外部伪代码,差错可能来源于[b]函数太大而横跨外部极限。
*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个公共定义或外部援用名。
不行使为变量没关系裁减行使的段数。
行使staroundic存储类型说
明符可裁减全局变量的行使数目。
合理调整定义性说明的身分可裁减外部援用名的行使数
目。
*FILEWRITEERROR
当向list、prelist、work或object文件中写形式时,由于空间不够而发生差错。
对于keil。
*NON_NULLARGUMENTEXPECTED
所选的操纵参数必要一个括号内的变量,如一个文件夹或一个数。
*“(”AFTERCONTROLEXPECTED
变量的左括号丧失。
*“)”AFTERPARAMETEREXPECTED
变量的右括号丧失。
*RESPECIFIEDORCONFLICTINGCONTROL
所选的操纵参数与后面发生争持或反复,例如CODE和NOCOND
*BADDECIMALNUMBER
操纵参数的数字含有犯科数,必要行使十进制数。
*OUTOFRANGEDECIMALNUMBER
操纵参数的数字越界,例如OPTIMIZE的参量为0-5。
*IDENTIFIEREXPECTED
操纵参数DEFINE必要一个标识符做参量,与C措辞的规则相同。
*PARSESTACKOVERFLOW
剖析栈溢出。
可能是源序次蕴涵特别纷乱的表达式,或效用块嵌套数横跨15。
*PREPOCESSOR:
MACROTONESTED
宏扩展岁月,预经管器的栈耗用太大。
解释宏嵌套太多,或有递归宏定义。
*PREPOCESSOR:
LINETOOLONG(510)
宏扩展先行横跨510个字符。
*CAN’THAVEGENERALCONTROLININVOCATIONLINE
一般操纵(如EJECT)不能是命令行的一局限,应将它们放入源文件“pragma”预经管行
中。
你知道错误。
D.2语法及语义差错
D.2.1差错格式
这类差错在列表文件中出现如下格式的音讯:
***ERRORINLINEOF:
errormessgeneraroundion
***WARINGINLINEOF:
warningmessgeneraroundion
表示差错行;
表示源文件或头文件中与差错或戒备相关的行;
指明了差错所在的源文件或头文件;
D.2.2差错音讯及可能发生的原因
*ERROR100:
unprintsetchardeeder0x?
?
skipped
源文件中发掘犯科字符(小心,注解内的字符不做查验)。
*ERROR101:
unclosedstring
串未用引号末了。
*ERROR102:
stringtoolong
串不得横跨511个字符。
为了定义更长的串,用户必需行使续行符‘\’逻辑的接续该串,
在词汇剖析时遇到以该符号末了的行会与下行连接起来。
*ERROR103:
invingidchardeederconstish
试图再声明一个已定义的宏,已生活的宏没关系用#undef指令删除。
预定义的宏不能删除。
*ERROR104:
identifierexpected
预经管器指令盼愿出现一个标示符,如ifdef。
*ERROR105:
unclosedcomment
当注解无结局界定符(*/)时出现此差错。
*EROOR106:
unnicelystedrivinginstructornessd#if-endifcontrols
endif的数量与if或ifdef的数量不成婚。
*ERROR107:
includefilenestingexceeds9
include指令后的文件名有效或丧失
*ERROR108:
expectedstring-如#error“string”
预经管器指令盼愿一个串变量。
*ERROR109:
errortext>
由#error伪指令引入的差错音讯以差错信号形式出现。
*ERROR110:
missingdirective
预经管行#后欠缺伪指令。
*ERROR111:
unknowndirective
预经管行#后不是伪指令。
*ERROR112:
mispl_webd‘elif’
*ERROR113:
mispl_webd‘else’
*ERROR114:
mispl_webd‘endif’
指令elif/else/endif唯有在if、ifdef、ifndef指令内才是合法的。
*ERROR117:
proposingverseintegerexpression
if/elif指令的数值表达式有语法差错。
*ERROR118:
missing’(‘aftermairconditioningroidentifier
宏调用中实参表的左括号丧失
*ERROR119:
reuseofmairconditioningroformingpariameter
宏定义形参名反复行使
*ERROR120:
‘C’unexpectedinforminglist
形参表中不准许有字符‘c’,应用逗号代庖
*ERROR121:
missing‘)’afterthectuingpariameter
宏调用实参表的右括号丧失
*ERROR122:
illegingmairconditioningroinvoc
宏调用的实参表与宏定义中的形参表不同
*ERROR123:
missingmairconditioningroniameafter‘define’
#define伪指令后缺预定义的宏
*ERROR124:
expectedmairconditioningroformingpariameter
宏定义恳求形参名
*ERROR125:
declarconsumedrtoocomplex
说明过于纷乱
*ERROR126:
type-stairconditioningkunderflow
对象的声明至少只能蕴涵20个类型修饰符(【】,*,(),)差错126通常在差错125之前,
两者一起发生。
*ERROR127:
invingidstorgeneraroundionclrearend
对象用有效的存储类所说明。
当在函数外用motorvehicle/register存储时会发生这种境况。
*ERROR128:
memorysp_web:
illegingmemorysp_web‘memorysp_web’used
函数参数的存储类由存储形式(SMALLLARGECOMPACT)肯定用户不能转换,行使不同
于存储形式的主动变量该当为动态的存储类
*ERROR129:
missing’;’until‘token’
该差错表示分号丧失,对于错误。
我不知道变态传奇无英雄。
通常该差错会引发一连串的差错,引发的这些差错有关紧要。
由于缺
少分号后编译器不能做无误的语法剖析
*ERROR130:
vingueoutofryoushouldbeneficialge
using或interrupt指令后参数越限。
using用的存放器组号位0-3,interrupt必要0-15的中
断号
*ERROR131:
duplicconsumedfunction-pariameter
函数中形参名反复,形参名应相互不同
*ERROR132:
notinformingpariameterlist
函数内参数声明行使的名字未出现在参数表中
*ERROR133:
charfunction(v0-v1-v2)
Char*v0-*v1-*v5;/*’v5’在形参中未出现
*ERROR134:
xdarounda/idarounda/pdarounda/daroundaonfunctionnotpermitted
函数总是驻留于0x5xxxx的code存储区,不能位于xdarounda/idarounda/pdarounda/darounda空间
*ERROR135:
proposingversestorgeneraroundionclrearendforwhile
位变量的定义没关系领受staroundic或extern的存储类,情绪。
用REGIESTER和ALIEN都是犯科的
*ERROR136:
‘void’onvariset
‘void’类型只准许作为函数的前往类型或与指针类型合用(void*)
*ERROR137:
illegingpariametertype:
’function’
函数参数的类型不能是函数,然则函数指针没关系作为参数
*ERROR138:
interrupt()maynotreceiveorreturnvingue(s)
中断函数既不能有参数又不能有前往值
*ERROR139:
illeginguseof‘peculiar’
关键字peculiar将函数定义为PL/M51端正的历程与函数布局。
这意味着C函数中有参数的缩
记符号(即funct(…);)时是不能用peculiar的
*ERROR140:
听听生气。
whileinillegingmemory-sp_web
位变量的定义可蕴涵修饰符DATA-借使无修饰符则假定为DATA。
由于位变量永远位于
0x4xxx的外部数据存储器中,当试图采用其他存储空间就会出现这个差错。
*ERROR141:
NEAR:
expected
编译器所见的单词是差错的。
盼愿无误的单词
*ERROR142:
invingidstructuremtroubledmixress
Sfr说明中的基址有错。
有效基址为0x80-0xff。
借使声明采用structure^pos形式,则基址是8的
整数倍
*ERROR143:
invingidessentiingwhileposition
Swhile说明中位地址必需在0x80-0xff之间
*ERROR144:
structure^pos:
错误。
invingidwhileposition
Swhile说明中位pos必需在0~7之间
*ERROR145:
undeclunquestionabdomininglyaredsfr
Sfr未说明
*ERROR146:
invingidsfr
万万位地址说明(structure^pos)蕴涵有效的基地址。
这个基地址必需与sfr名绝对应
*ERROR147:
objecttoolarge
对象不能横跨(64k)字节
*ERROR148:
fieldnotpermittedinunion
连结不能蕴涵位成员,这个限制是由8051布局肯定的。
*ERROR149:
functionmemyoushouldberinstruct/union
布局恐怕连结不能蕴涵函数类型的成员。
但是指向函数的指针是准许的
*ERROR150:
whilememyoushouldberinstruct/union
布局恐怕连结不能蕴涵位类型的成员,这个限制是由8051布局肯定的
*ERROR151:
selfrelaroundivestruct/union
布局恐怕连结不能蕴涵自身
*ERROR152:
whilefieldtypetoosmeverywhileoffornumyoushouldberofportions
位域声明中指定的位数横跨所给原型中位的数量
*ERROR153:
niamedwhile-fieldcyoushouldbeneficialnothaudio-videoe0width
命名的域宽度为0差错,唯有未命名的位域准许是0宽度
*ERROR154:
protofield
无指向位域指针的类型
*ERROR155:
char/intrequiredforfields
位域基类型恳求char或int类型,unsignedchar或unsignedint也有效
*ERROR156:
peculiarpermittedonfunctiononly
Alien只能用于函数
*ERROR157:
错误。
var_pforearmrestsonpeculiarfunction
有变参数的函数不能用peculiar-由于PL/M51函数只能用牢固数量的参数
*ERROR158:
functioncontainsunniamedpariameter
函数定义的参数表中蕴涵知名参数。
知名参数只准许用于函数的原型中
*ERROR159:
typefollowsvoid
函数原型声明中可含一个空的参数表f(void)。
Void后不能再用其他类型定义
*ERROR160:
voidinvingid
Void类型只能与指针合用或解释函数没有前往值
*ERROR161:
formingpariameterignored
函数内的外部函数援用声明行使了无类型的参数表。
错误。
例如“extern(a-b-c);”恳求形参表
*ERROR162:
duplicconsumedfunction-pariameter
函数内参数名反复
*ERROR163:
unknownplethorasize
一般的不论是一维数组还是多维数组或外部数组,都必要指定数组的大小,这个大小是由编
译器的初始化时计算,这个差错解释试图为一个未定维的数组行使sizeof运算符,会哦着一
个多维数组的附加元素未定义。
*ERROR164:
ptrtonull
这一个差错通常是由前一个差错造成的
*ERROR165:
ptrtowhile
指向位的指针不是合法的类型
*ERROR166:
connectedwithfunction
数组不能蕴涵函数,但可能蕴涵指向函数的指针。
*ERROR167:
connectedwithfields
位域不能安放为数组
*ERROR168:
connectedwithwhile
数组没有位类型
*ERROR169:
functionreturnsfunction
函数不能前往函数,但没关系前往一个指向函数的指针
*ERROR170:
functionreturnsplethora
函数不能前往数组,但可前往指向数组的指针
*ERROR171:
missingenclosingswith
Break/continue语句只能出现在for-while-dowhile或switch语句中心。
*ERROR172:
missingenclosingswith
Cautomotiveserviceengineers语句只能用在switch语句中
*ERROR173:
对比一下情绪。
missingreturn-expression
前往类型不是integer的函数必需蕴涵一条代表达式的return语句。
由于要与老版本兼容,
编译器对前往整形值的函数不做查验
*ERROR174:
return-expressiononvoid-function
Void函数不能前往值,因而不能蕴涵带表达式return的语句
*ERROR175:
duplicconsumedcautomotiveserviceengineersvingue
每个cautomotiveserviceengineers语句必需蕴涵一个常量表达式做其变量,这个值不能在switch语句的各级中出现
屡次
*ERROR176:
morethyoushouldbeneficialonedefault
Switch语句中不能蕴涵多于一个的default语句
*ERROR177:
differentstruct/union
赋值或参数传达中行使了布局/连结的不同类型
*ERROR178:
struct/unioncomparisonilleging
根据ANSIC,两个布局或连结的斗劲是不准许的
*ERROR179:
cyoushouldbeneficialnot/cbasicallytfrom/tovoid-type
将void类型转化为其他类型数据或将其他类型转化为void类型都是犯科的
*ERROR180:
cyoushouldbeneficialnotcbasicallytto’function’
转化为function是犯科的,行使函数指针指向不同的函数
*ERROR181:
incomparoundibleoperbasicallywellbasically
在所给的运算符中至少有一个操作符类型是有效的
*ERROR182:
pointtodifferentobject
敷陈指针行使不一致
*ERROR183:
unmodifisetvingue
预编削的对象位于CODE存储区,因而不能编削
*ERROR184:
sizeof:
illegingoperbasicallywellbasically
Sizeof运算符不能肯定函数或位域大小
*ERROR185:
differentmemorysp_web
对象说明的存储空间与后面的不一致
*ERROR186:
invingiddereference
这条差错音讯可能由编译器外部题目出现的
*ERROR187:
notyoushouldbeneficiallvingue
所需参量必需是可变对象的地址
*ERROR188:
unknownobjectsize
无法计算对象的大小,由于欠缺数组的维数或由于议决void指针的直接拜候
*ERROR189:
‘&’onwhile/sfrilleging
地址操作符‘&’不准许用于位对象或sfr
*ERROR190:
’&’:
notyoushouldbeneficiallvingue
地质部是可变的对象,不能作为左值
*ERROR191:
‘&’onconstish
试图为所列类型常数建立指针
*ERROR192:
‘&’onplethora/function
地址操作符&不准许用于数组或函数,函数和数组自己都代表了地址
*ERROR193:
illegingop-type(s)
*ERROR193:
illegingmix/subonptr
*ERROR193:
illegingoperonwhile(s)
*ERROR193:
proposingverseoperbasic