版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、c 編譯器錯誤與解決方法keil c 編譯器錯誤與解決方法小提示 : 按 Ctrl+F 鍵可以直接查找:1. Warning 280: i :unreferenced local variable說明局部變量i 在函數(shù)中未作任何的存取操作解決方法消除函數(shù)中 i 變量的宣告2 Warning 206: Music3 :missing function -prototype 說明 Music3( ) 函數(shù)未作宣告或未作外部宣告所以無法給其他函數(shù)調(diào)用 解決方法將敘述 voidMusic3(void) 寫在程序的最前端作宣告如果是其他文件的函數(shù)則要寫成 extern void Music3(void)
2、, 即作外部宣告3 Compling :C:8051MANN.CError:318:can t open file beep.h 說明在編譯C:8051MANN.C 程序過程中由于 main.c 用了指令 ,i nclude“beep.h” , 但卻找不到所致解決方法編寫一個beep.h 的包含檔并存入到 c:8051 的工作目錄中4 Compling:C:8051LED.CError 237: LedOn :function already has a body說明 LedOn( ) 函數(shù)名稱重復(fù)定義即有兩個以上一樣的函數(shù)名稱解決方法修正其中的一個函數(shù)名稱使得函數(shù)名稱都是獨立的5 *WARN
3、ING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAYPROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY說明 DelayX1ms( ) 函數(shù)未被其它函數(shù)調(diào)用也會占用程序記憶體空間解決方法去掉DelayX1ms( ) 函數(shù)或利用條件編譯#if ,.#endif,可保留該函數(shù)并不編譯6 *WARNING 6 :XDATA SPACE MEMORY OVERLAP FROM : 0025HTO: 0025H說明外部資料ROM勺0025H重復(fù)定義地址解決方法外部資料 ROM的定義如下Pdata unsigned char XFR_ADC _at_0
4、 x25其中 XFR_ADC變量的名稱為 0 x25, 請檢查是否有其它的變量名稱也是定義在0 x25 處并修正它 7 WARNING 206: DelayX1ms : miss ing function-prototypeC:8051INPUT.CError 267 : DelayX1ms :requires ANSI -style prototypeC:8051INPUT.C 說明程序中有調(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說明程序中有調(diào)用MUSIC函數(shù)但未將該函數(shù)的含擴檔 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說明 data 存儲空間的地址范圍為 00 x7f, 當公用變量數(shù)目和函數(shù)里的局部變量如果存儲模式設(shè)為SMALL則局部變量先使用工作寄存器 R2R7作暫存當存儲器不夠用時則會以 data 型別的空間作暫存的個數(shù)超過0 x7f 時就會出現(xiàn)地址不夠的現(xiàn)象解決方法將以 data 型別定義的公共變量修改
7、為 idata 型別的定義說明如對編譯出錯感興趣的網(wǎng)友能否把你們常遇到的錯誤信息收集起來并提出最終的解決辦法加以歸納以期共享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)有一個函數(shù)可能會被主函數(shù)和一個中斷服務(wù)程序 ( 或者調(diào)用中斷服務(wù)程序的函數(shù)) 同時調(diào)用 ,或者同時被多個中斷服務(wù)程序調(diào)用。出現(xiàn)這種問題的原因之一是這個函數(shù)是不可重入性函數(shù), 當該函數(shù)運行時它可能會被一個中斷打斷, 從而使得結(jié)果發(fā)生變化并可能會引起一些變量形式的沖突( 即引
9、起函數(shù)內(nèi)一些數(shù)據(jù)的丟失, 可重入性函數(shù)在任何時候都可以被ISR 打斷 , 一段時間后又可以運行 , 但是相應(yīng)數(shù)據(jù)不會丟失) 。原因之二是用于局部變量和變量( 暫且這樣翻譯,arguments, 自變量 , 變元一數(shù)值 , 用于確定程序或子程序的值) 的內(nèi)存區(qū)被其他函數(shù)的內(nèi)存區(qū)所覆蓋, 如果該函數(shù)被中斷 , 則它的內(nèi)存區(qū)就會被使用 , 這將導(dǎo)致其他函數(shù)的內(nèi)存沖突。例如,第一個警告中函數(shù) WRITE_GMVLX1_REGD_GMVLX1.(CE者 D_GMVLX1.A51被定義 ,它被一個中斷服務(wù)程序或者一個調(diào)用了中斷服務(wù)程序的函數(shù)調(diào)用了,調(diào)用它的函數(shù)是VSYNC_INTERRU所,MAIN.C中
10、 決方法 :如果你確定兩個函數(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)用 ,你可能會需要也將這些函數(shù)排除在覆蓋分析(overlay analysis) 之
11、外。這種OVERLAY旨令能使編譯器除去上述警告信息。如果函數(shù)可以在其執(zhí)行時被調(diào)用 , 則情況會變得更復(fù)雜一些。這時可以采用以下幾種方法:主程序調(diào)用該函數(shù)時禁止中斷,可以在該函數(shù)被調(diào)用時用 #pragma disable語句來實現(xiàn)禁止中斷的目的。必須使用 OVERLAY旨令將該函數(shù)從覆蓋分析中除去。3.復(fù)制兩份該函數(shù)的代碼, 一份到主程序中 , 另一份復(fù)制到中斷服務(wù)程序中。將該函數(shù)設(shè)為重入型。例如 :void myfunc(void) reentrant .這種設(shè)置將會產(chǎn)生一個可重入堆棧, 該堆棧被被用于存儲函數(shù)值和局部變量, 用這種方法時重入堆棧必須在 STARTUP.A5儀件中配置。這種方
12、法消耗更多的RAM并會降低重入函數(shù)的執(zhí)行速度。11. * WARNINGL16: UNCALLED SEGMENT, IGNORED FOR OVERLAYPROCESSSEGMENT: ?PR?_COMPARE?TESTLCD程序中有些函數(shù)(或片段)以前(調(diào)試過程中 ) 從未被調(diào)用過, 或者根本沒有調(diào)用它的語句。這條警告信息前應(yīng)該還有一條信息指示出是哪個函數(shù)導(dǎo)致了這一問題。只要做點簡單的調(diào)整就可以。不理它也沒什么大不了的。解決方法:去掉COMPARE數(shù)或利用條件編譯#if ,.#endif,可保留該函數(shù)并不編譯。C 編譯器錯誤信息中文翻譯Ambiguous operators needpar
13、entheses不明確的運算需要用括號括起Ambiguous symbol xxx不明確的符號Argument list syntax error參數(shù)表語法錯誤Array bounds missing丟失數(shù)組界限符Array size toolarge數(shù)組尺寸太大Bad character in paramenters 參數(shù)中有不適當?shù)淖址鸅ad file name format in include directive包含命令中文件名格式不正確Bad ifdef directive synatax 編譯預(yù)處理ifdef 有語法錯Bad undef directive syntax 編譯預(yù)處理
14、undef 有語法錯Bit field too large位字段太長Call of non-function調(diào)用未定義的函數(shù)Call to function with no prototype調(diào)用函數(shù)時沒有函數(shù)的說明Cannot modify a const object不允許修改常量對象Case outside of switch 漏掉了 case 語句Case syntax errorCase 語法錯誤Code has no effect代碼不可述不可能執(zhí)行到Compound statement missing 分程序漏掉Conflicting type modifiers 不明確的類型說
15、明符Constant expression required 要求常量表達式Constant out of range in comparison在比較中常量超出范圍Conversion may losesignificant digits轉(zhuǎn)換時會丟失意義的數(shù)字Conversion of near pointer not allowed不允許轉(zhuǎn)換近指針Could not find file xxx找不到 XXX文件Declaration missing ; 說明缺少 ;Declaration syntax error 說明中出現(xiàn)語法錯誤Default outside of switch Def
16、ault 出現(xiàn)在 switch 語句之外Define directive needs an identifier定義編譯預(yù)處理需要標識符Division by zero用零作除數(shù)Do statement must have while Do-while 語句中缺少 while 部分Enum syntax error枚舉類型語法錯誤Enumeration constant syntax error枚舉常數(shù)語法錯誤Error directive :xxxError writing output fileExpression syntax errorExtra parameter in callFi
17、le name too long文件名太長Function call missing )錯誤的編譯預(yù)處理命令寫輸出文件錯誤表達式語法錯誤調(diào)用時出現(xiàn)多余錯誤函數(shù)調(diào)用缺少右括號Fuction definition out of place 函數(shù)定義位置錯誤Fuction should return a value 函數(shù)必需返回一個值Goto statement missing label Goto 語句沒有標號Hexadecimal or octal constant too large16 進制或 8 進制常數(shù)太大Illegal character xIllegal initialization
18、非法的初始化Illegal octal digit非法的 8 進制數(shù)字Illegal pointer subtractionIllegal structure operationIllegal use of floating pointIllegal use of pointerImproper use of a非法字符 x非法的指針相減非法的結(jié)構(gòu)體操作非法的浮點運算指針使用非法typedefsymbol類型定義符號使用不恰當In-line assembly not allowed不允許使用行間匯編Incompatible storage class 存儲類別不相容Incompatible t
19、ype conversion 不相容的類型轉(zhuǎn)換Incorrect number format 錯誤的數(shù)據(jù)格式Incorrect use of default Default 使用不當Invalid indirection 無效的間接運算Invalid pointer addition 指針相加無效Irreducible expression tree 無法執(zhí)行的表達式運算Lvalue required需要邏輯值0 或非 0 值Macro argument syntax error 宏參數(shù)語法錯誤Macro expansion too long 宏的擴展以后太長Mismatched number
20、 of parameters in definition 定義中參數(shù)個數(shù)不匹配Misplaced break此處不應(yīng)出現(xiàn)break 語句Misplaced continue此處不應(yīng)出現(xiàn)continue 語句Misplaced decimal point此處不應(yīng)出現(xiàn)小數(shù)點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必須存儲定位的地址No declaration for function xxx沒有函數(shù) xxx 的說明No stack缺少堆棧No type information 沒有類型信息Non-portable pointerassignment不可移動的指針( 地址常數(shù) ) 賦值Non-portable pointer comparison不可移動的指針( 地址常數(shù) ) 比較Non-portable pointer conversion不可移動的指針( 地址常數(shù) ) 轉(zhuǎn)換Not a valid expression for
22、mattype不合法的表達式格式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 -符號 - 的左邊必須是指針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ù)計數(shù)需要邏輯值Size of structure or array not known結(jié)構(gòu)體或數(shù)給大小不確定Statement missing ;語句后缺少 ;Structure or union syntax error 結(jié)構(gòu)體或聯(lián)合體語法錯誤Structure size too large 結(jié)構(gòu)體尺寸太大Sub scripting missing 下標缺少右方括號S
24、uperfluous & with function or array函數(shù)或數(shù)組中有多余的 &可疑的指針轉(zhuǎn)換Suspicious pointer conversionSymbol limit exceeded 符號超限Too few parameters in call 函數(shù)調(diào)用時的實參少于函數(shù)的參數(shù)不Too many default cases Default 太多 (switch 語句中一個)Too many error or warning messages錯誤或警告信息太多Too many type in declaration 說明中類型太多Too much auto memory in function函數(shù)用到的局部存儲太多Too much global data defined in file文件中全局數(shù)據(jù)太多Two consecutive dots兩個連續(xù)的句點Type mismatch in parameter xxx參數(shù) xxx 類型不匹配Type mismatch inredeclaration of xxx xxx重定義的類型不匹配Unable to create output file xxx無法建立輸出文件xxxUnable to open include file xxx無法打開被包含的文件xxxUnable to open input fil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 森林火災(zāi)主題課程設(shè)計
- 核電站施工項目資料管理考核試卷
- 2025年燃煤發(fā)電機組項目發(fā)展計劃
- 2025年工業(yè)物聯(lián)網(wǎng)項目建議書
- 2025版建筑工程施工合同審計與評估培訓(xùn)協(xié)議3篇
- 人教版九年級上冊化學(xué)期末復(fù)習(xí)第六單元試題及答案
- 水性EAU塑膠跑道施工進度計劃及保證措施
- 《混合式教學(xué)模式下的學(xué)習(xí)觀念與學(xué)習(xí)策略研究》
- 2024年道路與橋梁建設(shè)施工合同
- 天車工過關(guān)檢測模擬題帶答案
- 知識產(chǎn)權(quán)三星蘋果專利戰(zhàn)課件
- 壓力容器安全技術(shù)規(guī)程
- 藥品上量實用
- 白疕(銀屑?。┲嗅t(yī)護理效果評價表
- GB/T 17129-1997無色光學(xué)玻璃化學(xué)穩(wěn)定性試驗方法粉末法
- GB 3452.1-1992液壓氣動用O形橡膠密封圈尺寸系列及公差
- 保潔人員院感培訓(xùn)完整版課件
- 國家開放大學(xué)電大《藥物化學(xué)》期末題庫及答案
- 電工二級技師測試題與答案
- 養(yǎng)老機構(gòu)公建民營合同
- 綜合計算工時工作制實施方案42620
評論
0/150
提交評論