keilc編譯器錯(cuò)誤與解決方法_第1頁
keilc編譯器錯(cuò)誤與解決方法_第2頁
keilc編譯器錯(cuò)誤與解決方法_第3頁
keilc編譯器錯(cuò)誤與解決方法_第4頁
keilc編譯器錯(cuò)誤與解決方法_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、keilc編譯器錯(cuò)誤與解決方法小提示:按Ctrl+F鍵可以直接查找:1.Warning280:i:unreferencedlocalvariable說明局部變量i在函數(shù)中未作任何的存取操作解決方法消除函數(shù)中i變量的宣告Warning206:Music3:missingfunction-prototype說明Music3()函數(shù)未作宣告或未作外部宣告所以無法給其他函數(shù)調(diào)用解決方法將敘述voidMusic3(void)寫在程序的最前端作宣告如果是其他文件的函數(shù)則要寫成externvoidMusic3(void),即作外部宣告Compling:C:8051MANN.CError:318:cantop

2、enfilebeep.h說明在編譯C:8051MANN.C程序過程中由于main.c用了指令#include“beep.h”,但卻找不到所致解決方法編寫一個(gè)beep.h的包含檔并存入到c:8051的工作目錄中Compling:C:8051LED.CError237:LedOn:functionalreadyhasabody說明LedOn()函數(shù)名稱重復(fù)定義即有兩個(gè)以上一樣的函數(shù)名稱解決方法修正其中的一個(gè)函數(shù)名稱使得函數(shù)名稱都是獨(dú)立的*WARNING16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?_DELAYX1MS?DELAY說明D

3、elayX1ms()函數(shù)未被其它函數(shù)調(diào)用也會占用程序記憶體空間解決方法去掉DelayXlms()函數(shù)或利用條件編譯#if.#endif,可保留該函數(shù)并不編譯*WARNING6:XDATASPACEMEMORYOVERLAPFROM:0025HTO:0025H說明外部資料ROM的0025H重復(fù)定義地址解決方法外部資料ROM的定義如下PdataunsignedcharXFR_ADC_at_0 x25其中XFR_ADC變量的名稱為0 x25,請檢查是否有其它的變量名稱也是定義在0 x25處并修正它WARNING206:DelayX1ms:missingfunction-prototypeC:8051

4、INPUT.CError267:DelayX1ms:requiresANSI-styleprototypeC:8051INPUT.C說明程序中有調(diào)用DelayX1ms函數(shù)但該函數(shù)沒定義即未編寫程序內(nèi)容或函數(shù)已定義但未作宣告解決方法編寫DelayX1ms的內(nèi)容編寫完后也要作宣告或作外部宣告可在delay.h的包含檔宣告成外部以便其它函數(shù)調(diào)用8*WARNING1:UNRESOLVEDEXTERNALSYMBOLSYMBOL:MUSIC3MODULE:C:8051MUSIC.OBJ(MUSIC)*WARNING2:REFERENCEMADETOUNRESOLVEDEXTERNALSYMBOL:MUS

5、IC3MODULE:C:8051MUSIC.OBJ(MUSIC)ADDRESS:0018H說明程序中有調(diào)用MUSIC函數(shù)但未將該函數(shù)的含擴(kuò)檔C加入到工程檔Prj作編譯和連接解決方法設(shè)MUSIC3函數(shù)在MUSICC里將MUSICC添加到工程文件中去9*ERROR107:ADDESSSPACEOVERFLOWSPACE:DATASEGMENT:_DATA_GOUP_LENGTH:0018H*ERROR118:REFERENCEMADETOERRONEOUSEXTERNALSYMBOL:VOLUMEMODULE:C:8051OSDM.OBJ(OSDM)ADDRESS:4036H說明data存儲空間的

6、地址范圍為00 x7f,當(dāng)公用變量數(shù)目和函數(shù)里的局部變量如果存儲模式設(shè)為SMALL則局部變量先使用工作寄存器R2R7作暫存當(dāng)存儲器不夠用時(shí)則會以data型別的空間作暫存的個(gè)數(shù)超過0 x7f時(shí)就會出現(xiàn)地址不夠的現(xiàn)象解決方法將以data型別定義的公共變量修改為idata型別的定義說明如對編譯出錯(cuò)感興趣的網(wǎng)友能否把你們常遇到的錯(cuò)誤信息收集起來并提出最終的解決辦法加以歸納以期共享10.*WARNINGL15:MULTIPLECALLTOSEGMENTSEGMENT:?PR?_WRITE_GMVLX1_REG?D_GMVLX1CALLER1:?PR?VSYNC_INTERRUPT?MAINCALLER2

7、:?C_C51STARTUP*WARNINGL15:MULTIPLECALLTOSEGMENTSEGMENT:?PR?_SPI_SEND_WORD?D_SPICALLER1:?PR?VSYNC_INTERRUPT?MAINCALLER2:?C_C51STARTUP*WARNINGL15:MULTIPLECALLTOSEGMENTSEGMENT:?PR?SPI_RECEIVE_WORD?D_SPICALLER1:?PR?VSYNC_INTERRUPT?MAINCALLER2:?C_C51STARTUP該警告表示連接器發(fā)現(xiàn)有一個(gè)函數(shù)可能會被主函數(shù)和一個(gè)中斷服務(wù)程序(或者調(diào)用中斷服務(wù)程序的函數(shù))同時(shí)

8、調(diào)用,或者同時(shí)被多個(gè)中斷服務(wù)程序調(diào)用。出現(xiàn)這種問題的原因之一是這個(gè)函數(shù)是不可重入性函數(shù),當(dāng)該函數(shù)運(yùn)行時(shí)它可能會被一個(gè)中斷打斷,從而使得結(jié)果發(fā)生變化并可能會引起一些變量形式的沖突(即引起函數(shù)內(nèi)一些數(shù)據(jù)的丟失,可重入性函數(shù)在任何時(shí)候都可以被ISR打斷,一段時(shí)間后又可以運(yùn)行,但是相應(yīng)數(shù)據(jù)不會丟失)。原因之二是用于局部變量和變量(暫且這樣翻譯,arguments自變量,變元一數(shù)值,用于確定程序或子程序的值)的內(nèi)存區(qū)被其他函數(shù)的內(nèi)存區(qū)所覆蓋,如果該函數(shù)被中斷,則它的內(nèi)存區(qū)就會被使用,這將導(dǎo)致其他函數(shù)的內(nèi)存沖突。例如,第一個(gè)警告中函數(shù)WRITE_GMVLX1_REG在D_GMVLX1.C或者D_GMVLX

9、1.A51被定義,它被一個(gè)中斷服務(wù)程序或者一個(gè)調(diào)用了中斷服務(wù)程序的函數(shù)調(diào)用了,調(diào)用它的函數(shù)是VSYNC_INTERRUPT,在MAIN.C中。解決方法:如果你確定兩個(gè)函數(shù)決不會在同一時(shí)間執(zhí)行(該函數(shù)被主程序調(diào)用并且中斷被禁止),并且該函數(shù)不占用內(nèi)存(假設(shè)只使用寄存器),則你可以完全忽略這種警告。如果該函數(shù)占用了內(nèi)存,則應(yīng)該使用連接器(linker)OVERLAY指令將函數(shù)從覆蓋分析(overlayanalysis)中除去,例如:OVERLAY(?PR?_WRITE_GMVLX1_REG?D_GMVLX1!*)上面的指令防止了該函數(shù)使用的內(nèi)存區(qū)被其他函數(shù)覆蓋。如果該函數(shù)中調(diào)用了其他函數(shù),而這些被

10、調(diào)用在程序中其他地方也被調(diào)用,你可能會需要也將這些函數(shù)排除在覆蓋分析(overlayanalysis)之外。這種OVERLAY指令能使編譯器除去上述警告信息。如果函數(shù)可以在其執(zhí)行時(shí)被調(diào)用,則情況會變得更復(fù)雜一些。這時(shí)可以采用以下幾種方法:主程序調(diào)用該函數(shù)時(shí)禁止中斷,可以在該函數(shù)被調(diào)用時(shí)用#pragmadisable語句來實(shí)現(xiàn)禁止中斷的目的。必須使用OVERLAY指令將該函數(shù)從覆蓋分析中除去。復(fù)制兩份該函數(shù)的代碼,一份到主程序中,另一份復(fù)制到中斷服務(wù)程序中。將該函數(shù)設(shè)為重入型。例如:voidmyfunc(void)reentrant這種設(shè)置將會產(chǎn)生一個(gè)可重入堆棧,該堆棧被被用于存儲函數(shù)值和局部變

11、量,用這種方法時(shí)重入堆棧必須在STARTUP.A51文件中配置。這種方法消耗更多的RAM并會降低重入函數(shù)的執(zhí)行速度。11.*WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?_COMPARE?TESTLCD說明:程序中有些函數(shù)(或片段)以前(調(diào)試過程中)從未被調(diào)用過,或者根本沒有調(diào)用它的語句。這條警告信息前應(yīng)該還有一條信息指示出是哪個(gè)函數(shù)導(dǎo)致了這一問題。只要做點(diǎn)簡單的調(diào)整就可以。不理它也沒什么大不了的。解決方法:去掉COMPARE()函數(shù)或利用條件編譯#if.#endif,可保留該函數(shù)并不編譯。C編譯器錯(cuò)誤信息中文翻譯

12、Ambiguousoperatorsneedparentheses不明確的運(yùn)算需要用括號括起Ambiguoussymbolxxx不明確的符號Argumentlistsyntaxerror參數(shù)表語法錯(cuò)誤Arrayboundsmissing丟失數(shù)組界限符Arraysizetoolarge數(shù)組尺寸太大Badcharacterinparamenters參數(shù)中有不適當(dāng)?shù)淖址鸅adfilenameformatinincludedirective包含命令中文件名格式不正確Badifdefdirectivesynatax編譯預(yù)處理ifdef有語法錯(cuò)Badundefdirectivesyntax編譯預(yù)處理und

13、ef有語法錯(cuò)Bitfieldtoolarge位字段太長Callofnon-function調(diào)用未定義的函數(shù)Calltofunctionwithnoprototype調(diào)用函數(shù)時(shí)沒有函數(shù)的說明Cannotmodifyaconstobject不允許修改常量對象Caseoutsideofswitch漏掉了case語句CasesyntaxerrorCase語法錯(cuò)誤Codehasnoeffect代碼不可述不可能執(zhí)行到Compoundstatementmissing分程序漏掉Conflictingtypemodifiers不明確的類型說明符Constantexpressionrequired要求常量表達(dá)式C

14、onstantoutofrangeincomparison在比較中常量超出范圍Conversionmaylosesignificantdigits轉(zhuǎn)換時(shí)會丟失意義的數(shù)字Conversionofnearpointernotallowed不允許轉(zhuǎn)換近指針Couldnotfindfilexxx找不到XXX文件Declarationmissing;說明缺少;Declarationsyntaxerror說明中出現(xiàn)語法錯(cuò)誤DefaultoutsideofswitchDefault出現(xiàn)在switch語句之外Definedirectiveneedsanidentifier定義編譯預(yù)處理需要標(biāo)識符Divisio

15、nbyzero用零作除數(shù)DostatementmusthavewhileDo-while語句中缺少while部分Enumsyntaxerror枚舉類型語法錯(cuò)誤Enumerationconstantsyntaxerror枚舉常數(shù)語法錯(cuò)誤Errordirective:xxx錯(cuò)誤的編譯預(yù)處理命令Errorwritingoutputfile寫輸出文件錯(cuò)誤Expressionsyntaxerror表達(dá)式語法錯(cuò)誤Extraparameterincall調(diào)用時(shí)出現(xiàn)多余錯(cuò)誤Filenametoolong文件名太長Functioncallmissing)函數(shù)調(diào)用缺少右括號Fuctiondefinitionout

16、ofplace函數(shù)定義位置錯(cuò)誤Fuctionshouldreturnavalue函數(shù)必需返回一個(gè)值GotostatementmissinglabelGoto語句沒有標(biāo)號Hexadecimaloroctalconstanttoolarge16進(jìn)制或8進(jìn)制常數(shù)太大Illegalcharacterx非法字符xIllegalinitialization非法的初始化Illegaloctaldigit非法的8進(jìn)制數(shù)字Illegalpointersubtraction非法的指針相減Illegalstructureoperation非法的結(jié)構(gòu)體操作Illegaluseoffloatingpoint非法的浮點(diǎn)運(yùn)

17、算Illegaluseofpointer指針使用非法Improperuseofatypedefsymbol類型定義符號使用不恰當(dāng)In-lineassemblynotallowed不允許使用行間匯編Incompatiblestorageclass存儲類別不相容Incompatibletypeconversion不相容的類型轉(zhuǎn)換Incorrectnumberformat錯(cuò)誤的數(shù)據(jù)格式IncorrectuseofdefaultDefault使用不當(dāng)Invalidindirection無效的間接運(yùn)算Invalidpointeraddition指針相加無效Irreducibleexpressiontre

18、e無法執(zhí)行的表達(dá)式運(yùn)算Lvaluerequired需要邏輯值0或非0值Macroargumentsyntaxerror宏參數(shù)語法錯(cuò)誤Macroexpansiontoolong宏的擴(kuò)展以后太長Mismatchednumberofparametersindefinition定義中參數(shù)個(gè)數(shù)不匹配Misplacedbreak此處不應(yīng)出現(xiàn)break語句Misplacedcontinue此處不應(yīng)出現(xiàn)continue語句Misplaceddecimalpoint此處不應(yīng)出現(xiàn)小數(shù)點(diǎn)Misplacedelifdirective不應(yīng)編譯預(yù)處理elifMisplacedelse此處不應(yīng)出現(xiàn)elseMisplaced

19、elsedirective此處不應(yīng)出現(xiàn)編譯預(yù)處理elseMisplacedendifdirective此處不應(yīng)出現(xiàn)編譯預(yù)處理endifMustbeaddressable必須是可以編址的Musttakeaddressofmemorylocation必須存儲定位的地址NodeclarationforfunctionXXX沒有函數(shù)XXX的說明Nostack缺少堆棧Notypeinformation沒有類型信息Non-portablepointerassignment不可移動的指針(地址常數(shù))賦值Non-portablepointercomparison不可移動的指針(地址常數(shù))比較Non-porta

20、blepointerconversion不可移動的指針(地址常數(shù))轉(zhuǎn)換Notavalidexpressionformattype不合法的表達(dá)式格式Notanallowedtype不允許使用的類型Numericconstanttoolarge數(shù)值常太大Outofmemory內(nèi)存不夠用Parameterxxxisneverused能數(shù)xxx沒有用到Pointerrequiredonleftsideof-符號-的左邊必須是指針Possibleuseofxxxbeforedefinition在定義之前就使用了xxx(警告)Possiblyincorrectassignment賦值可能不正確Redecl

21、arationofxxx重復(fù)定義了xxxRedefinitionofxxxisnotidenticalxxx的兩次定義不一致Registerallocationfailure寄存器定址失敗Repeatcountneedsanlvalue重復(fù)計(jì)數(shù)需要邏輯值Sizeofstructureorarraynotknown結(jié)構(gòu)體或數(shù)給大小不確定Statementmissing;語句后缺少;!Structureorunionsyntaxerror結(jié)構(gòu)體或聯(lián)合體語法錯(cuò)誤Structuresizetoolarge結(jié)構(gòu)體尺寸太大Subscriptingmissing下標(biāo)缺少右方括號Superfluous&wit

22、hfunctionorarray函數(shù)或數(shù)組中有多余的&Suspiciouspointerconversion可疑的指針轉(zhuǎn)換Symbollimitexceeded符號超限Toofewparametersincall函數(shù)調(diào)用時(shí)的實(shí)參少于函數(shù)的參數(shù)不ToomanydefaultcasesDefault太多(switch語句中一個(gè))Toomanyerrororwarningmessages錯(cuò)誤或警告信息太多Toomanytypeindeclaration說明中類型太多Toomuchautomemoryinfunction函數(shù)用到的局部存儲太多Toomuchglobaldatadefinedinfile文件中全局?jǐn)?shù)據(jù)太多Twoconsecutivedots兩個(gè)連續(xù)的句點(diǎn)Typemismatchinparameterxxx參數(shù)xxx類型不匹配Typemismatchinredeclarationofxxxxxx重定義的類型不匹配Unabletocreateoutputfilexxx無法建立輸出文件xxxUnabletoopenincludefilexxx無法打開被包含的文件xxxUnable

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論