【經(jīng)驗筆記】IAR常見(jiàn)錯誤及警告信息表
用慣了IAR覺(jué)著(zhù)它真的灰常強大(雖然UI界面有點(diǎn)簡(jiǎn)單,沒(méi)有Keil和Eclipse做的那么炫),隨著(zhù)使用的時(shí)間越來(lái)越長(cháng),不斷有新的技巧和功能被發(fā)掘,第一是不斷給俺帶來(lái)驚喜,第二是成就感自我感覺(jué)良好,第三也是最重要的就是IAR功能的強大極大程度上方便了我們的產(chǎn)品開(kāi)發(fā),所以如此“賢內助”我們怎么舍得拒絕呢(這回輪到給IAR做廣告了),哈哈~
本文引用地址:http://dyxdggzs.com/article/148280.htm不過(guò)令我們頭疼的是當編譯程序時(shí)出現的一大堆錯誤及警告信息,雖然大多數問(wèn)題好解決,不過(guò)也有一些錯誤或者警告讓我們抓耳撓腮無(wú)所適從。所以這里我就列出IAR一些常見(jiàn)的錯誤和警告信息所代表的意思及相應的處理方法,希望能對正在使用IAR的同志們有所幫助。另外本信息表主要是我在逛阿莫論壇時(shí)看到的,也沒(méi)有原作者相應的信息,所以無(wú)法在這里感謝了,也因此我以“經(jīng)驗筆記”的形式寫(xiě)出來(lái)(當然也有自己的一些批注)。下面我挑了一些重點(diǎn)的列出來(lái)并加以注釋?zhuān)唧w原版信息表見(jiàn)文章最后的附件:
一、警告信息表:
1.Macro name redefine(宏被重新定義)
表示用#define定義的宏在程序中以不同形式的參數或者形式重新定義了。
2.undeclared function parameter name; assumed int(為聲明的函數參數“name”,假設為“int”型)
缺省情況下,函數定義頭部中未聲明的標識符默認為“int”型。
3.unreferenced label name(未引用的標號“name”)
這個(gè)貌似最常遇到的警告之一了,常常我們定義了某個(gè)變量,但在程序中卻沒(méi)有使用它。
4.unreachable returns, the function will never return.(不能到達的返回,即執行不到RET指令,函數不能返回)
函數永遠不能返回到調用的函數中,這可能是程序設計的bug造成的。當然如果是RTOS的話(huà),這點(diǎn)是正常的,無(wú)需考慮,因為操作系統每一個(gè)任務(wù)就是無(wú)限循環(huán)。
5.Floating point constant out of range.(浮點(diǎn)常數超出范圍)
浮點(diǎn)值太大或者太小以致于不能使用目標的浮點(diǎn)系統來(lái)表示。
... ...
二、錯誤信息表:
1.Invalid syntax(無(wú)效的語(yǔ)法)
系統編譯器不能識別的語(yǔ)法,語(yǔ)句不符合標準。
2.Failed to open #include file name(打開(kāi)頭文件失?。?/p>
這也是比較常見(jiàn)的錯誤,編譯器在編譯程序的時(shí)候找不到文件里包含的頭文件,可能頭文件不存在或者路徑不對等等。
3.member name of struct or union redeclared(結構體或者聯(lián)合體成員變量被重新聲明)
這個(gè)錯誤也是比較常犯的,因忘記了在結構體后者聯(lián)合體中已經(jīng)定義的變量,而在程序主體之中又重新定義或者聲明了這個(gè)變量。
4.‘; ’ expected(忘記語(yǔ)句結束符'; ')
這個(gè)貌似是最常見(jiàn)的錯誤了吧,估計好多新手都犯過(guò)這個(gè)錯誤,養成一個(gè)語(yǔ)句結尾都要加‘; '的好習慣是你從菜鳥(niǎo)邁向大牛很重要的一步。
5.“else” without preceding “if”(“else”沒(méi)有前導的“if”)
過(guò)多或者雜亂的使用if...else嵌套容易造成此類(lèi)錯誤,常常丟三落四,所以養成好的編程風(fēng)格和習慣可以避免此類(lèi)錯誤。
... ...
錯誤和警告的類(lèi)型很多很多,我這里列出來(lái)的只是冰山之一角了
51單片機相關(guān)文章:51單片機教程
評論