KEIL錯(cuò)誤表:
1. Warning 280:’i’:unreferenced localvariable說(shuō)明局部變量i 在函數(shù)中未作任何的存取操作解決方法消除函數(shù)中i 變量的宣告2 Warning 206:’Music3’:missingfunction-prototype說(shuō)明Music3( )函數(shù)未作宣告或未作外部宣告所以無(wú)法給其他函數(shù)調(diào)用解決方法將敘述void Music3(void)寫(xiě)在程序的最前端作宣告如果是其他文件的函數(shù)則要寫(xiě)成extern void Music3(void),即作外部宣告3 Compling :C:\8051\MANN.CError:318:can’t open file ‘beep.h’說(shuō)明在編譯C:\8051\MANN.C 程序過(guò)程中由于main.c用了指令#i nclude “beep.h”,但卻找不到所致解決方法編寫(xiě)一個(gè)beep.h 的包含檔并存入到c:\8051的工作目錄中4 Compling:C:\8051\LED.CError 237:’LedOn’:function already has a body說(shuō)明LedOn( )函數(shù)名稱(chēng)重復(fù)定義即有兩個(gè)以上一樣的函數(shù)名稱(chēng)解決方法修正其中的一個(gè)函數(shù)名稱(chēng)使得函數(shù)名稱(chēng)都是獨(dú)立的5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY說(shuō)明DelayX1ms( )函數(shù)未被其它函數(shù)調(diào)用也會(huì)占用程序記憶體空間解決方法去掉DelayX1ms( )函數(shù)或利用條件編譯#if …..#endif,可保留該函數(shù)并不編譯6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAPFROM : 0025HTO: 0025H說(shuō)明外部資料ROM 的0025H 重復(fù)定義地址解決方法外部資料ROM 的定義如下Pdata unsignedchar XFR_ADC _at_0x25 其中XFR_ADC變量的名稱(chēng)為0x25,請(qǐng)檢查是否有其它的變量名稱(chēng)也是定義在0x25處并修正它7 WARNING 206:’DelayX1ms’: missing function-prototypeC:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototype C:\8051\INPUT.C說(shuō)明程序中有調(diào)用DelayX1ms 函數(shù)但該函數(shù)沒(méi)定義即未編寫(xiě)程序內(nèi)容或函數(shù)已定義但未作宣告解決方法編寫(xiě)DelayX1ms 的內(nèi)容編寫(xiě)完后也要作宣告或作外部宣告可在delay.h 的包含檔宣告成外部以便其它函數(shù)調(diào)用8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOLSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNALSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)ADDRESS:0018H說(shuō)明程序中有調(diào)用MUSIC 函數(shù)但未將該函數(shù)的含擴(kuò)檔C 加入到工程檔Prj 作編譯和連接解決方法設(shè)MUSIC3 函數(shù)在MUSIC C 里將MUSIC C 添加到工程文件中去9 ***ERROR 107:ADDESS SPACE OVERFLOWSPACE: DATASEGMENT: _DATA_GOUP_LENGTH: 0018H***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNALSYMBOL: VOLUMEMODULE: C:\8051\OSDM.OBJ (OSDM)ADDRESS: 4036H說(shuō)明data 存儲(chǔ)空間的地址范圍為0~0x7f,當(dāng)公用變量數(shù)目和函數(shù)里的局部變量如果存儲(chǔ)模式設(shè)為SMALL 則局部變量先使用工作寄存器R2~R7 作暫存當(dāng)存儲(chǔ)器不夠用時(shí)則會(huì)以data 型別的空間作暫存的個(gè)數(shù)超過(guò)0x7f 時(shí)就會(huì)出現(xiàn)地址不夠的現(xiàn)象解決方法將以data 型別定義的公共變量修改為idata 型別的定義說(shuō)明如對(duì)編譯出錯(cuò)感興趣的網(wǎng)友能否把你們常遇到的錯(cuò)誤信息收集起來(lái)并提出最終的解決辦法加以歸納以期共享10.***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1CALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_SPI_SEND_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP該警告表示連接器發(fā)現(xiàn)有一個(gè)函數(shù)可能會(huì)被主函數(shù)和一個(gè)中斷服務(wù)程序(或者調(diào)用中斷服務(wù)程序的函數(shù))同時(shí)調(diào)用,或者同時(shí)被多個(gè)中斷服務(wù)程序調(diào)用。出現(xiàn)這種問(wèn)題的原因之一是這個(gè)函數(shù)是不可重入性函數(shù),當(dāng)該函數(shù)運(yùn)行時(shí)它可能會(huì)被一個(gè)中斷打斷,從而使得結(jié)果發(fā)生變化并可能會(huì)引起一些變量形式的沖突(即引起函數(shù)內(nèi)一些數(shù)據(jù)的丟失,可重入性函數(shù)在任何時(shí)候都可以被ISR 打斷,一段時(shí)間后又可以運(yùn)行,但是相應(yīng)數(shù)據(jù)不會(huì)丟失)。原因之二是用于局部變量和變量(暫且這樣翻譯,arguments,[自變量,變?cè)粩?shù)值,用于確定程序或子程序的值])的內(nèi)存區(qū)被其他函數(shù)的內(nèi)存區(qū)所覆蓋,如果該函數(shù)被中斷,則它的內(nèi)存區(qū)就會(huì)被使用,這將導(dǎo)致其他函數(shù)的內(nèi)存沖突。例如,第一個(gè)警告中函數(shù)WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定義,它被一個(gè)中斷服務(wù)程序或者一個(gè)調(diào)用了中斷服務(wù)程序的函數(shù)調(diào)用了,調(diào)用它的函數(shù)是VSYNC_INTERRUPT,在MAIN.C 中。解決方法:如果你確定兩個(gè)函數(shù)決不會(huì)在同一時(shí)間執(zhí)行(該函數(shù)被主程序調(diào)用并且中斷被禁止),并且該函數(shù)不占用內(nèi)存(假設(shè)只使用寄存器),則你可以完全忽略這種警告。如果該函數(shù)占用了內(nèi)存,則應(yīng)該使用連接器(linker)OVERLAY指令將函數(shù)從覆蓋分析(overlay analysis)中除去,例如:OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)上面的指令防止了該函數(shù)使用的內(nèi)存區(qū)被其他函數(shù)覆蓋。如果該函數(shù)中調(diào)用了其他函數(shù),而這些被調(diào)用在程序中其他地方也被調(diào)用,你可能會(huì)需要也將這些函數(shù)排除在覆蓋分析(overlay analysis)之外。這種OVERLAY 指令能使編譯器除去上述警告信息。如果函數(shù)可以在其執(zhí)行時(shí)被調(diào)用,則情況會(huì)變得更復(fù)雜一些。這時(shí)可以采用以下幾種方法:1.主程序調(diào)用該函數(shù)時(shí)禁止中斷,可以在該函數(shù)被調(diào)用時(shí)用#pragmadisable 語(yǔ)句來(lái)實(shí)現(xiàn)禁止中斷的目的。必須使用OVERLAY 指令將該函數(shù)從覆蓋分析中除去。2.復(fù)制兩份該函數(shù)的代碼,一份到主程序中,另一份復(fù)制到中斷服務(wù)程序中。3.將該函數(shù)設(shè)為重入型。例如:void myfunc(void) reentrant {...}這種設(shè)置將會(huì)產(chǎn)生一個(gè)可重入堆棧,該堆棧被被用于存儲(chǔ)函數(shù)值和局部變量,用這種方法時(shí)重入堆棧必須在STARTUP.A51 文件中配置。這種方法消耗更多的RAM 并會(huì)降低重入函數(shù)的執(zhí)行速度。11. *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_COMPARE?TESTLCD說(shuō)明:程序中有些函數(shù)(或片段)以前(調(diào)試過(guò)程中)從未被調(diào)用過(guò),或者根本沒(méi)有調(diào)用它的語(yǔ)句。這條警告信息前應(yīng)該還有一條信息指示出是哪個(gè)函數(shù)導(dǎo)致了這一問(wèn)題。只要做點(diǎn)簡(jiǎn)單的調(diào)整就可以。不理它也沒(méi)什么大不了的。解決方法:去掉COMPARE()函數(shù)或利用條件編譯#if …..#endif,可保留該函數(shù)并不編譯。C 編譯器錯(cuò)誤信息中文翻譯Ambiguous operators needparentheses不明確的運(yùn)算需要用括號(hào)括起Ambiguous symbol ``xxx``不明確的符號(hào)Argument list syntax error參數(shù)表語(yǔ)法錯(cuò)誤Array bounds missing丟失數(shù)組界限符Array size toolarge數(shù)組尺寸太大Bad character in paramenters參數(shù)中有不適當(dāng)?shù)淖址鸅ad file name format in includedirective包含命令中文件名格式不正確Bad ifdef directive synatax編譯預(yù)處理ifdef 有語(yǔ)法錯(cuò)Bad undef directive syntax編譯預(yù)處理undef 有語(yǔ)法錯(cuò)Bit field too large位字段太長(zhǎng)Call of non-function調(diào)用未定義的函數(shù)Call to function with noprototype調(diào)用函數(shù)時(shí)沒(méi)有函數(shù)的說(shuō)明Cannot modify a const object不允許修改常量對(duì)象Case outside of switch漏掉了case 語(yǔ)句Case syntax errorCase 語(yǔ)法錯(cuò)誤Code has no effect代碼不可述不可能執(zhí)行到Compound statement missing{分程序漏掉"{"Conflicting type modifiers不明確的類(lèi)型說(shuō)明符Constant expression required要求常量表達(dá)式Constant out of range incomparison在比較中常量超出范圍Conversion may losesignificant digits轉(zhuǎn)換時(shí)會(huì)丟失意義的數(shù)字Conversion of near pointer notallowed不允許轉(zhuǎn)換近指針Could not find file ``xxx``找不到XXX 文件Declaration missing ;說(shuō)明缺少";"Declaration syntax error說(shuō)明中出現(xiàn)語(yǔ)法錯(cuò)誤Default outside of switchDefault 出現(xiàn)在switch 語(yǔ)句之外Define directive needs anidentifier定義編譯預(yù)處理需要標(biāo)識(shí)符Division by zero用零作除數(shù)Do statement must have whileDo-while 語(yǔ)句中缺少while 部分Enum syntax error枚舉類(lèi)型語(yǔ)法錯(cuò)誤Enumeration constant syntaxerror枚舉常數(shù)語(yǔ)法錯(cuò)誤Error directive :xxx錯(cuò)誤的編譯預(yù)處理命令Error writing output file寫(xiě)輸出文件錯(cuò)誤Expression syntax error表達(dá)式語(yǔ)法錯(cuò)誤Extra parameter in call調(diào)用時(shí)出現(xiàn)多余錯(cuò)誤File name too long文件名太長(zhǎng)Function call missing )函數(shù)調(diào)用缺少右括號(hào)Fuction definition out of place函數(shù)定義位置錯(cuò)誤Fuction should return a value函數(shù)必需返回一個(gè)值Goto statement missing labelGoto 語(yǔ)句沒(méi)有標(biāo)號(hào)Hexadecimal or octal constanttoo large16 進(jìn)制或8 進(jìn)制常數(shù)太大Illegal character ``x``非法字符xIllegal initialization非法的初始化Illegal octal digit非法的8 進(jìn)制數(shù)字Illegal pointer subtraction非法的指針相減Illegal structure operation非法的結(jié)構(gòu)體操作Illegal use of floating point非法的浮點(diǎn)運(yùn)算Illegal use of pointer指針使用非法Improper use of atypedefsymbol類(lèi)型定義符號(hào)使用不恰當(dāng)In-line assembly not allowed不允許使用行間匯編Incompatible storage class存儲(chǔ)類(lèi)別不相容Incompatible type conversion不相容的類(lèi)型轉(zhuǎn)換Incorrect number format錯(cuò)誤的數(shù)據(jù)格式Incorrect use of defaultDefault 使用不當(dāng)Invalid indirection無(wú)效的間接運(yùn)算Invalid pointer addition指針相加無(wú)效Irreducible expression tree無(wú)法執(zhí)行的表達(dá)式運(yùn)算Lvalue required需要邏輯值0 或非0 值Macro argument syntax error宏參數(shù)語(yǔ)法錯(cuò)誤Macro expansion too long宏的擴(kuò)展以后太長(zhǎng)Mismatched number ofparameters in definition定義中參數(shù)個(gè)數(shù)不匹配Misplaced break此處不應(yīng)出現(xiàn)break 語(yǔ)句Misplaced continue此處不應(yīng)出現(xiàn)continue 語(yǔ)句Misplaced decimal point此處不應(yīng)出現(xiàn)小數(shù)點(diǎn)Misplaced elif directive不應(yīng)編譯預(yù)處理elifMisplaced else此處不應(yīng)出現(xiàn)elseMisplaced else directive此處不應(yīng)出現(xiàn)編譯預(yù)處理elseMisplaced endif directive此處不應(yīng)出現(xiàn)編譯預(yù)處理endifMust be addressable必須是可以編址的Must take address of
memorylocation必須存儲(chǔ)定位的地址No declaration for function``xxx``沒(méi)有函數(shù)xxx 的說(shuō)明No stack缺少堆棧No type information沒(méi)有類(lèi)型信息Non-portable pointerassignment不可移動(dòng)的指針(地址常數(shù))賦值Non-portable pointercomparison不可移動(dòng)的指針(地址常數(shù))比較Non-portable pointerconversion不可移動(dòng)的指針(地址常數(shù))轉(zhuǎn)換Not a valid expression formattype不合法的表達(dá)式格式Not an allowed type不允許使用的類(lèi)型Numeric constant too large數(shù)值常太大Out of memory內(nèi)存不夠用Parameter ``xxx`` is neverused能數(shù)xxx 沒(méi)有用到Pointer required on left side of->符號(hào)->的左邊必須是指針Possible use of ``xxx`` beforedefinition在定義之前就使用了xxx(警告)Possibly incorrect assignment賦值可能不正確Redeclaration of ``xxx``重復(fù)定義了xxxRedefinition of ``xxx`` is notidenticalxxx 的兩次定義不一致Register allocation failure寄存器定址失敗Repeat count needs an lvalue重復(fù)計(jì)數(shù)需要邏輯值Size of structure or array notknown結(jié)構(gòu)體或數(shù)給大小不確定Statement missing ;語(yǔ)句后缺少";"Structure or union syntax error結(jié)構(gòu)體或聯(lián)合體語(yǔ)法錯(cuò)誤Structure size too large結(jié)構(gòu)體尺寸太大Sub scripting missing ]下標(biāo)缺少右方括號(hào)Superfluous & with function orarray函數(shù)或數(shù)組中有多余的"&"Suspicious pointer conversion可疑的指針轉(zhuǎn)換Symbol limit exceeded符號(hào)超限Too few parameters in call函數(shù)調(diào)用時(shí)的實(shí)參少于函數(shù)的參數(shù)不Too many default casesDefault 太多(switch 語(yǔ)句中一個(gè))Too many error or warningmessages錯(cuò)誤或警告信息太多Too many type in declaration說(shuō)明中類(lèi)型太多Too much auto memory infunction函數(shù)用到的局部存儲(chǔ)太多Too much global data definedin file文件中全局?jǐn)?shù)據(jù)太多Two consecutive dots兩個(gè)連續(xù)的句點(diǎn)Type mismatch in parameterxxx參數(shù)xxx 類(lèi)型不匹配Type mismatch inredeclaration of ``xxx``xxx 重定義的類(lèi)型不匹配Unable to create output file``xxx``無(wú)法建立輸出文件xxxUnable to open include file``xxx``無(wú)法打開(kāi)被包含的文件xxxUnable to open input file ``xxx``無(wú)法打開(kāi)輸入文件xxxUndefined label ``xxx``沒(méi)有定義的標(biāo)號(hào)xxxUndefined structure ``xxx``沒(méi)有定義的結(jié)構(gòu)xxxUndefined symbol ``xxx``沒(méi)有定義的符號(hào)xxxUnexpected end of file incomment started on line xxx從xxx 行開(kāi)始的注解尚未結(jié)束文件不能結(jié)束Unexpected end of file inconditional started on line xxx從xxx 開(kāi)始的條件語(yǔ)句尚未結(jié)束文件不能結(jié)束Unknown assemble instruction未知的匯編結(jié)構(gòu)Unknown option未知的操作Unknown preprocessordirective: ``xxx``不認(rèn)識(shí)的預(yù)處理命令xxxUnreachable code無(wú)路可達(dá)的代碼Unterminated string orcharacter constant字符串缺少引號(hào)User break用戶(hù)強(qiáng)行中斷了程序Void functions may not return avalueVoid 類(lèi)型的函數(shù)不應(yīng)有返回值Wrong number of arguments調(diào)用函數(shù)的參數(shù)數(shù)目錯(cuò)``xxx`` not an argumentxxx 不是參數(shù)``xxx`` not part of structurexxx 不是結(jié)構(gòu)體的一部分xxx statement missing (xxx 語(yǔ)句缺少左括號(hào)xxx statement missing )xxx 語(yǔ)句缺少右括號(hào)xxx statement missing ;xxx 缺少分號(hào)xxx`` declared but never used說(shuō)明了xxx 但沒(méi)有使用xxx`` is assigned a value whichis never used給xxx 賦了值但未用過(guò)Zero length structure結(jié)構(gòu)體的長(zhǎng)度為零
43.5 KB, 閱讀權(quán)限: 20, 下載次數(shù): 12