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