版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Keil编译时出现错误和警告的总结和C编译器错误信息中文翻译(1)L15重复调用*WARNINGL15:MULTIPLECALLTOSEGMENTSEGMENT:?PR?SPI_RECEIVE_WORD?D_SPICALLER1:?PR?VSYNC_INTERRUPT?MAINCALLER2:?C_C51STARTUP该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从而使得结果发生变化并可能会引起一些变量形式的冲突(即引起
2、函数内一些数据的丢失,可重入性函数在任何时候都可以被ISR打断,一段时间后又可以运行,但是相应数据不会丢失)。原因之二是用于局部变量和变量(暂且这样翻译,arguments,自变量,变元一数值,用于确定程序或子程序的值)的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数的内存冲突。例如,第一个警告中函数WRITE_GMVLX1_REG在D_GMVLX1.C或者D_GMVLX1.A51被定义,它被一个中断服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C中。解决方法:如果你确定两个函数决不会在同一
3、时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占用内存(假设只使用寄存器),则你可以完全忽略这种警告。如果该函数占用了内存,则应该使用连接器(linker)OVERLAY指令将函数从覆盖分析(overlayanalysis)中除去,例如:OVERLAY(?PR?_WRITE_GMVLX1_REG?D_GMVLX1!*)上面的指令防止了该函数使用的内存区被其他函数覆盖。如果该函数中调用了其他函数,而这些被调用在程序中其他地方也被调用,你可能会需要也将这些函数排除在覆盖分析(overlayanalysis)之外。这种OVERLAY指令能使编译器除去上述警告信息。如果函数可以在其执行时被
4、调用,则情况会变得更复杂一些。这时可以采用以下几种方法:主程序调用该函数时禁止中断,可以在该函数被调用时用#pragmadisable语句来实现禁止中断的目的。必须使用OVERLAY指令将该函数从覆盖分析中除去。,一份到主程序中,另一份复制到中断服务程序中。复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。将该函数设为重入型。例如:voidmyfunc(void)reentrant这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量栈必须在STARTUP.A51文件中配置。这种方法消耗更多的RAM并会降低重入函数的执行速度。(2)提示无M51文件编译时候提示:F:
5、.XX.M51Filehasbeenchangedoutsidetheeditor,reload?解决方法:重新生成项目,产生STARTUP.A51即可。(3)L16无调用*WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?_COMPARE?TESTLCD说明:程序中有些函数例如COMPARE(或片段)以前(调试过程中)从未被调用过有调用它的语句。这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就可以。不理它也没什么大不了的。解决方法:去掉COMPARE。函数或利用条件编译#if.#en
6、dif,可保留该函数并不编译。(4)L10和L16主程序名字写错(或无主程序)程序中:voidmian(void)编译提示:*WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?MIAN?MAIN,用这种方法时重入堆,或者根本没*WARNINGL10,用这种方法时重入堆,或者根本没ProgramSize:data=8.0 xdata=0code=9修改:缺少主程序(其实是笔误),将mian改为mainL16主程序没用到前面定义的函数主程序里没用到前面定义的函数,编译时显示:*WARNINGL16:UNCALLEDSEGM
7、ENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?DELAY?MAINL210程序前生成SRC语句BuildtargetTarget1assemblingSTARTUP.Apilingtest.C.linking.BL51BANKEDLINKER/LOCATERV6.00-SN:K1JXC-94Z4V9COPYRIGHTKEILELEKTRONIKGmbH1987-2005STARTUP.obj,test.objTOtest*FATALERRORL210:I/OERRORONINPUTFILE:EXCEPTION0021H:PATHORFILENOTFOUNDFI
8、LE:test.objTargetnotcreated设置上的问题,在程序里屏蔽掉#pragmasrc即可(7)C206函数未定义该函数没定义MAIN.C(15):warningC206:delay1:missingfunction-prototype(8)C141少分号部分程序:pval=P1/*ReadP1intopval*/P3=pval;/*WritepvaltoP3*/编译提示出错:MAIN.C(22):errorC141:syntaxerrornearP3改正:P1后加;C129汇编与C后缀问题例如写这么一段小程序,保存为cO.c,编译时出现errorcl29,miss;befor
9、e0000;如果保存为:cO.asm就不会出现这个错误,保存为c的话,先调用c51编译器,按c语言的要求编译,所以出现错误;可以参考一些书,专门介绍keilc这个编译器的;C101和C141关于数组引号问题定义了如下的数组:unsignedchara36=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f,0 x7e,0 x7d,0 x7b,0 x77,0 x6f,0 x5f,0 x3f,0 x3e,0 x3d,0 x3b,0 x37,0 x2f,0 x1f,0 x1e,0 x1d,0 x1b,0 x17,0 x0f,0 x0e,0 x0d,0 x0
10、b,0 x07,0 x06,0 x05,0 x03,0 x02,0 x01,0 x00;可是编译的时候总通不过,错误提示如下:BuildtargetTarget1compilingshaomiao.c.SHAOMIAO.C(3):errorC101:0:invalidcharacterconstantSHAOMIAO.C(3):errorC141:syntaxerrornearxfeSHAOMIAO.C(3):errorC101:invalidcharacterconstantTargetnotcreated解决方法:去掉.引号C100和C141和C129程序有中文标点用keil编译时出现错误
11、,如下:D:KEILC51INCREG52.H(1):errorC100:unprintablecharacter0 xAlskipped同上错误有很多个,还有D:KEILC51INCREG52.H(2):errorC141:syntaxerrornear#同上错误有很多个,还有D:KEILC51INCREG52.H(2):errorC129:missing;before符号-的左边必须是指针Possibleuseofxxxbeforedefinition在定义之前就使用了xxxDOODPossiblyincorrectassignment赋值可能不正确Redeclarationofxxx重复
12、定义了xxxRedefinitionofxxxisnotidenticalxxx的两次定义不一致Registerallocationfailure寄存器定址失败Repeatcountneedsanlvalue重复计数需要逻辑值Sizeofstructureorarraynotknown结构体或数给大小不确定Statementmissing;语句后缺少;Structureorunionsyntaxerror结构体或联合体语法错误Structuresizetoolarge结构体尺寸太大Subscriptingmissing下标缺少右方括号Superfluous&withfunctionorarra
13、y函数或数组中有多余的&Suspiciouspointerconversion可疑的指针转换Symbollimitexceeded符号超限Toofewparametersincall函数调用时的实参少于函数的参数不ToomanydefaultcasesDefault太多(switch语句中一个)Toomanyerrororwarningmessages错误或警告信息太多Toomanytypeindeclaration说明中类型太多Toomuchautomemoryinfunction函数用到的局部存储太多Toomuchglobaldatadefinedinfile文件中全局数据太多Twocon
14、secutivedots两个连续的句点Typemismatchinparameterxxx参数xxx类型不匹配Typemismatchinredeclarationofxxxxxx重定义的类型不匹配Unabletocreateoutputfilexxx无法建立输出文件xxxUnabletoopenincludefilexxx无法打开被包含的文件xxxUnabletoopeninputfilexxx无法打开输入文件xxxUndefinedlabelxxx没有定义的标号xxxUndefinedstructurexxx没有定义的结构xxxUndefinedsymbolxxx没有定义的符号xxxUne
15、xpectedendoffileincommentstartedonlinexxx从xxx行开始的注解尚未结束文件不能结束Unexpectedendoffileinconditionalstartedonlinexxx从xxx开始的条件语句尚未结束文件不能结束Unknownassembleinstruction未知的汇编结构Unknownoption未知的操作Unknownpreprocessordirective:xxx不认识的预处理命令xxxUnreachablecode无路可达的代码Unterminatedstringorcharacterconstant字符串缺少引号Userbreak
16、用户强行中断了程序VoidfunctionsmaynotreturnavalueVoid类型的函数不应有返回值Wrongnumberofarguments调用函数的参数数目错xxxnotanargumentxxx不是参数xxxnotpartofstructurexxx不是结构体的一部分xxxstatementmissing(xxx语句缺少左括号xxxstatementmissing)xxx语句缺少右括号xxxstatementmissing;xxx缺少分号xxxdeclaredbutneverused说明了xxx但没有使用xxxisassignedavaluewhichisneverused给
17、xxx赋了值但未用过Zerolengthstructure结构体的长度为零解决方法:1.Warning280:i:unreferencedlocalvariable说明局部变量i在函数中未作任何的存取操作解决方法消除函数中i变量的宣告Warning206:Music3:missingfunction-prototype说明Music3()函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述voidMusic3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成externvoidMusic3(void),即作外部宣告Compling:C:8051MANN.CError:31
18、8:cantopenfilebeep.h说明在编译C:8051MANN.C程序过程中由于main.c用了指令口include“beep.h”,但却找不到所致解决方法编写一个beep.h的包含档并存入到c:8051的工作目录中Compling:C:8051LED.CError237:LedOn:functionalreadyhasabody说明LedOn()函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的*WARNING16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?_DELAYX1MS?
19、DELAYDelayX1ms()函数或利用条件编说明DelayX1ms(DelayX1ms()函数或利用条件编译#if.#endif,可保留该函数并不编译*WARNING6:XDATASPACEMEMORYOVERLAPFROM:0025HTO:0025H说明外部资料ROM的0025H重复定义地址0 x25,请解决方法外部资料ROM的定义如下PdataunsignedcharXFR_ADC_at_0 x25其中XFR_ADC变量的名称为检查是否有其它的变量名称也是定义在0 x250 x25,请WARNING206:DelayX1ms:missingfunction-prototypeC:8051INPUT.CError267:DelayX1ms:requiresANSI-styleprototypeC:8051INPUT.C说明程序中有调用DelayX1ms函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms的内容编写完后也要作宣
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年影视后期中级笔试题
- 游子吟说课稿2025学年小学音乐人音版五线谱六年级下册-人音版(五线谱)
- 2026年宠物美容师技能考核模拟题库
- 2026年王二小故事说课稿
- 2026年三国赵云说课稿
- 2026年机器学习算法面试题深度解析
- 2026年幼儿园环保知识进校园方案设计
- 2026年机器人知识库建设目标
- 2026年青少年生涯规划测评
- 2026年宠物店店长管理方向笔试模拟题
- 高空抛物安全宣传教育
- 体检中心超流量工作预案
- 海上钢琴师电影讲解
- 1.《Linux网络操作系统》课程标准
- 三副实习记录簿附页
- 教育科学研究方法之如何收集研究资料
- 2024年河南豫能控股股份有限公司招聘笔试参考题库含答案解析
- 史上最全变电站各类设备讲解
- ISO-6336-5-2003正齿轮和斜齿轮载荷能力的计算-第五部分(中文)
- 专利侵权判定的基本问题
- 佛山市公共租赁住房申请书
评论
0/150
提交评论