新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 【經(jīng)驗筆記】IAR常見錯誤及警告信息表

【經(jīng)驗筆記】IAR常見錯誤及警告信息表

作者: 時間:2012-11-02 來源:網(wǎng)絡(luò) 收藏

用慣了覺著它真的灰常強大(雖然UI界面有點簡單,沒有Keil和Eclipse做的那么炫),隨著使用的時間越來越長,不斷有新的技巧和功能被發(fā)掘,第一是不斷給俺帶來驚喜,第二是成就感自我感覺良好,第三也是最重要的就是功能的強大極大程度上方便了我們的產(chǎn)品開發(fā),所以如此“賢內(nèi)助”我們怎么舍得拒絕呢(這回輪到給做廣告了),哈哈~

本文引用地址:http://butianyuan.cn/article/148280.htm

不過令我們頭疼的是當(dāng)編譯程序時出現(xiàn)的一大堆,雖然大多數(shù)問題好解決,不過也有一些或者讓我們抓耳撓腮無所適從。所以這里我就列出IAR一些所代表的意思及相應(yīng)的處理方法,希望能對正在使用IAR的同志們有所幫助。另外本表主要是我在逛阿莫論壇時看到的,也沒有原作者相應(yī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單片機教程




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉