版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、c 編譯器錯(cuò)誤與解決方法keil c 編譯器錯(cuò)誤與解決方法小提示 : 按 Ctrl+F 鍵可以直接查找:1. Warning 280: i :unreferenced local variable說(shuō)明局部變量i 在函數(shù)中未作任何的存取操作解決方法消除函數(shù)中 i 變量的宣告2 Warning 206: Music3 :missing function -prototype 說(shuō)明 Music3( ) 函數(shù)未作宣告或未作外部宣告所以無(wú)法給其他函數(shù)調(diào)用 解決方法將敘述 voidMusic3(void) 寫在程序的最前端作宣告如果是其他文件的函數(shù)則要寫成 extern void Music3(void)
2、, 即作外部宣告3 Compling :C:8051MANN.CError:318:can t open file beep.h 說(shuō)明在編譯C:8051MANN.C 程序過程中由于 main.c 用了指令 ,i nclude“beep.h” , 但卻找不到所致解決方法編寫一個(gè)beep.h 的包含檔并存入到 c:8051 的工作目錄中4 Compling:C:8051LED.CError 237: LedOn :function already has a body說(shuō)明 LedOn( ) 函數(shù)名稱重復(fù)定義即有兩個(gè)以上一樣的函數(shù)名稱解決方法修正其中的一個(gè)函數(shù)名稱使得函數(shù)名稱都是獨(dú)立的5 *WARN
3、ING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAYPROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY說(shuō)明 DelayX1ms( ) 函數(shù)未被其它函數(shù)調(diào)用也會(huì)占用程序記憶體空間解決方法去掉DelayX1ms( ) 函數(shù)或利用條件編譯#if ,.#endif,可保留該函數(shù)并不編譯6 *WARNING 6 :XDATA SPACE MEMORY OVERLAP FROM : 0025HTO: 0025H說(shuō)明外部資料ROM勺0025H重復(fù)定義地址解決方法外部資料 ROM的定義如下Pdata unsigned char XFR_ADC _at_0
4、 x25其中 XFR_ADC變量的名稱為 0 x25, 請(qǐng)檢查是否有其它的變量名稱也是定義在0 x25 處并修正它 7 WARNING 206: DelayX1ms : miss ing function-prototypeC:8051INPUT.CError 267 : DelayX1ms :requires ANSI -style prototypeC:8051INPUT.C 說(shuō)明程序中有調(diào)用 DelayX1ms 函數(shù)但該函數(shù)沒定義即未編寫程序內(nèi)容或函數(shù)已定義但未作宣告解決方法編寫 DelayX1ms 的內(nèi)容編寫完后也要作宣告或作外部宣告可在delay.h 的包含檔宣告成外部以便其它函數(shù)調(diào)
5、用8 *WARNING 1:UNRESOLVED EXTERNAL SYMBOL SYMBOL:MUSIC3MODULE:C:8051MUSIC.OBJ(MUSIC) *WARNING 2:REFERENCE MADE TOUNRESOLVED EXTERNALSYMBOL:MUSIC3MODULE:C:8051MUSIC.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 OVERFLO
6、W SPACE: DATASEGMENT: _DATA_GOUP_LENGTH: 0018H*ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNALSYMBOL: VOLUMEMODULE: C:8051OSDM.OBJ (OSDM) ADDRESS: 4036H說(shuō)明 data 存儲(chǔ)空間的地址范圍為 00 x7f, 當(dāng)公用變量數(shù)目和函數(shù)里的局部變量如果存儲(chǔ)模式設(shè)為SMALL則局部變量先使用工作寄存器 R2R7作暫存當(dāng)存儲(chǔ)器不夠用時(shí)則會(huì)以 data 型別的空間作暫存的個(gè)數(shù)超過0 x7f 時(shí)就會(huì)出現(xiàn)地址不夠的現(xiàn)象解決方法將以 data 型別定義的公共變量修改
7、為 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?MAIN CALLER2: ?C_C51STARTUP*WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_SPI_SEND_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?M
8、AINCALLER2: ?C_C51STARTUP*WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI CALLER1: ?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)這種問題的原因之一是這個(gè)函數(shù)是不可重入性函數(shù), 當(dāng)該函數(shù)運(yùn)行時(shí)它可能會(huì)被一個(gè)中斷打斷, 從而使得結(jié)果發(fā)生變化并可能會(huì)引起一些變量形式的沖突( 即引
9、起函數(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_REGD_GMVLX1.(CE者 D_GMVLX1.A51被定義 ,它被一個(gè)中斷服務(wù)程序或者一個(gè)調(diào)用了中斷服務(wù)程序的函數(shù)調(diào)用了,調(diào)用它的函數(shù)是VSYNC_INTERRU所,MAIN.C中
10、 決方法 :如果你確定兩個(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) 之
11、外。這種OVERLAY旨令能使編譯器除去上述警告信息。如果函數(shù)可以在其執(zhí)行時(shí)被調(diào)用 , 則情況會(huì)變得更復(fù)雜一些。這時(shí)可以采用以下幾種方法:主程序調(diào)用該函數(shù)時(shí)禁止中斷,可以在該函數(shù)被調(diào)用時(shí)用 #pragma disable語(yǔ)句來(lái)實(shí)現(xiàn)禁止中斷的目的。必須使用 OVERLAY旨令將該函數(shù)從覆蓋分析中除去。3.復(fù)制兩份該函數(shù)的代碼, 一份到主程序中 , 另一份復(fù)制到中斷服務(wù)程序中。將該函數(shù)設(shè)為重入型。例如 :void myfunc(void) reentrant .這種設(shè)置將會(huì)產(chǎn)生一個(gè)可重入堆棧, 該堆棧被被用于存儲(chǔ)函數(shù)值和局部變量, 用這種方法時(shí)重入堆棧必須在 STARTUP.A5儀件中配置。這種方
12、法消耗更多的RAM并會(huì)降低重入函數(shù)的執(zhí)行速度。11. * WARNINGL16: UNCALLED SEGMENT, IGNORED FOR OVERLAYPROCESSSEGMENT: ?PR?_COMPARE?TESTLCD程序中有些函數(shù)(或片段)以前(調(diào)試過程中 ) 從未被調(diào)用過, 或者根本沒有調(diào)用它的語(yǔ)句。這條警告信息前應(yīng)該還有一條信息指示出是哪個(gè)函數(shù)導(dǎo)致了這一問題。只要做點(diǎn)簡(jiǎn)單的調(diào)整就可以。不理它也沒什么大不了的。解決方法:去掉COMPARE數(shù)或利用條件編譯#if ,.#endif,可保留該函數(shù)并不編譯。C 編譯器錯(cuò)誤信息中文翻譯Ambiguous operators needpar
13、entheses不明確的運(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 include directive包含命令中文件名格式不正確Bad ifdef directive synatax 編譯預(yù)處理ifdef 有語(yǔ)法錯(cuò)Bad undef directive syntax 編譯預(yù)處理
14、undef 有語(yǔ)法錯(cuò)Bit field too large位字段太長(zhǎng)Call of non-function調(diào)用未定義的函數(shù)Call to function with no prototype調(diào)用函數(shù)時(shí)沒有函數(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 不明確的類型說(shuō)
15、明符Constant expression required 要求常量表達(dá)式Constant out of range in comparison在比較中常量超出范圍Conversion may losesignificant digits轉(zhuǎn)換時(shí)會(huì)丟失意義的數(shù)字Conversion of near pointer not allowed不允許轉(zhuǎn)換近指針Could not find file xxx找不到 XXX文件Declaration missing ; 說(shuō)明缺少 ;Declaration syntax error 說(shuō)明中出現(xiàn)語(yǔ)法錯(cuò)誤Default outside of switch Def
16、ault 出現(xiàn)在 switch 語(yǔ)句之外Define directive needs an identifier定義編譯預(yù)處理需要標(biāo)識(shí)符Division by zero用零作除數(shù)Do statement must have while Do-while 語(yǔ)句中缺少 while 部分Enum syntax error枚舉類型語(yǔ)法錯(cuò)誤Enumeration constant syntax error枚舉常數(shù)語(yǔ)法錯(cuò)誤Error directive :xxxError writing output fileExpression syntax errorExtra parameter in callFi
17、le name too long文件名太長(zhǎng)Function call missing )錯(cuò)誤的編譯預(yù)處理命令寫輸出文件錯(cuò)誤表達(dá)式語(yǔ)法錯(cuò)誤調(diào)用時(shí)出現(xiàn)多余錯(cuò)誤函數(shù)調(diào)用缺少右括號(hào)Fuction definition out of place 函數(shù)定義位置錯(cuò)誤Fuction should return a value 函數(shù)必需返回一個(gè)值Goto statement missing label Goto 語(yǔ)句沒有標(biāo)號(hào)Hexadecimal or octal constant too large16 進(jìn)制或 8 進(jìn)制常數(shù)太大Illegal character xIllegal initialization
18、非法的初始化Illegal octal digit非法的 8 進(jìn)制數(shù)字Illegal pointer subtractionIllegal structure operationIllegal use of floating pointIllegal use of pointerImproper use of a非法字符 x非法的指針相減非法的結(jié)構(gòu)體操作非法的浮點(diǎn)運(yùn)算指針使用非法typedefsymbol類型定義符號(hào)使用不恰當(dāng)In-line assembly not allowed不允許使用行間匯編Incompatible storage class 存儲(chǔ)類別不相容Incompatible t
19、ype conversion 不相容的類型轉(zhuǎn)換Incorrect number format 錯(cuò)誤的數(shù)據(jù)格式Incorrect use of default Default 使用不當(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
20、 of parameters 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 directiveMisplaced endif directive此處不應(yīng)出現(xiàn)編譯預(yù)處理else此處不應(yīng)出現(xiàn)編譯預(yù)處理endifMust be addressable 必須是可以編
21、址的Must take address of memory location必須存儲(chǔ)定位的地址No declaration for function xxx沒有函數(shù) xxx 的說(shuō)明No stack缺少堆棧No type information 沒有類型信息Non-portable pointerassignment不可移動(dòng)的指針( 地址常數(shù) ) 賦值Non-portable pointer comparison不可移動(dòng)的指針( 地址常數(shù) ) 比較Non-portable pointer conversion不可移動(dòng)的指針( 地址常數(shù) ) 轉(zhuǎn)換Not a valid expression for
22、mattype不合法的表達(dá)式格式Not an allowed type 不允許使用的類型Numeric constant too large數(shù)值常太大Out of memory內(nèi)存不夠用Parameter xxx is neverused能數(shù) xxx 沒有用到Pointer required on left side of -符號(hào) - 的左邊必須是指針Possible use of xxx before definition在定義之前就使用了 xxx( 警告 )Possibly incorrect assignment 賦值可能不正確Redeclaration of xxx 重復(fù)定義了 xxx
23、Redefinition of xxx is not identicalxxx 的兩次定義不一致Register allocation failure 寄存器定址失敗Repeat count needs an lvalue 重復(fù)計(jì)數(shù)需要邏輯值Size of structure or array not known結(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)S
24、uperfluous & with function or array函數(shù)或數(shù)組中有多余的 &可疑的指針轉(zhuǎn)換Suspicious pointer conversionSymbol limit exceeded 符號(hào)超限Too few parameters in call 函數(shù)調(diào)用時(shí)的實(shí)參少于函數(shù)的參數(shù)不Too many default cases Default 太多 (switch 語(yǔ)句中一個(gè))Too many error or warning messages錯(cuò)誤或警告信息太多Too many type in declaration 說(shuō)明中類型太多Too much auto memory in function函數(shù)用到的局部存儲(chǔ)太多Too much global data defined in file文件中全局?jǐn)?shù)據(jù)太多Two consecutive dots兩個(gè)連續(xù)的句點(diǎn)Type mismatch in parameter xxx參數(shù) xxx 類型不匹配Type mismatch inredeclaration of xxx xxx重定義的類型不匹配Unable to create output file xxx無(wú)法建立輸出文件xxxUnable to open include file xxx無(wú)法打開被包含的文件xxxUnable to open input fil
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安全生產(chǎn)工作計(jì)劃
- 2025年度森林防火安全生產(chǎn)責(zé)任制及監(jiān)控合同3篇
- 2025餐飲業(yè)三人合作項(xiàng)目風(fēng)險(xiǎn)承擔(dān)合同3篇
- 2024智慧城市公共交通優(yōu)化合同
- 2024年適用無(wú)息貸款協(xié)議規(guī)范格式版
- 2025年度智能節(jié)能彩板房定制安裝服務(wù)協(xié)議3篇
- 2024通信基礎(chǔ)設(shè)施建設(shè)與運(yùn)營(yíng)管理服務(wù)合同3篇
- 2024某大型水利樞紐建設(shè)與運(yùn)營(yíng)合同
- 2024隨車吊設(shè)備租賃與操作培訓(xùn)合同3篇
- 2025餐飲店鋪食品安全責(zé)任承諾書范本3篇
- 2025湖北襄陽(yáng)市12345政府熱線話務(wù)員招聘5人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 血細(xì)胞分析報(bào)告規(guī)范化指南2020
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之7:“5領(lǐng)導(dǎo)作用-5.1領(lǐng)導(dǎo)作用和承諾”(雷澤佳編制-2025B0)
- 機(jī)電傳動(dòng)單向數(shù)控平臺(tái)-礦大-機(jī)械電子-有圖
- 《中國(guó)近現(xiàn)代史綱要(2023版)》課后習(xí)題答案合集匯編
- 陜西省榆林市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 螺桿空壓機(jī)作業(yè)指導(dǎo)書
- 中國(guó)智能物聯(lián)網(wǎng)(AIoT)研究報(bào)告
- 江蘇新海石化有限公司廢氣治理項(xiàng)目環(huán)境影響報(bào)告書
- 6.8相遇問題(課件) 數(shù)學(xué)四年級(jí)下冊(cè)(共15張PPT)人教版
- 面癱(面神經(jīng)炎)中醫(yī)臨床路徑
評(píng)論
0/150
提交評(píng)論