亚洲国产成人av在线观看,777米奇色狠狠狠888影视,一二三四在线视频观看社区,小荡货奶真大水真多紧视频

MDK編譯器警告和錯誤詳解
發(fā)布時間:2018-03-29

工作后從單片機(jī)轉(zhuǎn)成ARM,剛開始用ADS1.2編譯器,用了一段時間,因為我接手的項目的老程序正是用ADS編譯的,部門也大都在用.在學(xué)單片機(jī)的時候用的是keil.c51編譯器,ads和這個編譯器在易用性上真是無法比較.后來漸漸知道keil已經(jīng)被arm公司收購,現(xiàn)在keil.MDK成為了arm官方編譯器,所以決定重新投奔keil,利用平時的時間,將原程序重新用mdk編譯.小編在這里把平時遇到的編譯器給出的警告和錯誤信息給出詳解,希望給初學(xué)者一點幫助。

 

 1.warning:  #550-D: variable "d" was set but never used

描述:變量'd'定義但從未使用,或者是,雖然這個變量你使用了,但編譯器認(rèn)為變量d所在的語句沒有意義,編譯器把它優(yōu)化了.

解決:仔細(xì)衡量所定義的變量d是否有用,若是認(rèn)定變量d所在語句有意義,那么嘗試用volatile關(guān)鍵字修飾變量d,若是真的沒有用,那么刪除掉以釋放可能的內(nèi)存.

 

2.warning:  #1-D: last line of file ends without a newline

描述:文件最后一行不是新的一行.編譯器要求程序文件的最后一行必須是空行,想了半天沒想通為什么要這樣.

解決:可以不理會.若是覺得出現(xiàn)警告不爽,那么在出現(xiàn)警告的文件的最后一行敲個回車,空出一行.

 

3. warning:  #111-D: statement is unreachable

描述:聲明不可能到達(dá).多出現(xiàn)在這種場合:

解決:不理會.

 

4. warning: C3017W: data may be used before being set

描述:變量'data'在使用前沒有明確的賦值

解決:應(yīng)仔細(xì)衡量該變量的初始值是否為0,若是,可以不理會這個警告,因為MDK編譯器在程序執(zhí)行前,會將使用到的數(shù)據(jù)區(qū)初始化為0,但若是該變量的初始值不應(yīng)該是0,忽略這個警告可能會引起致命錯誤.這個警告應(yīng)引起足夠重視.應(yīng)養(yǎng)成變量賦初值的習(xí)慣,好在有編譯器給把關(guān).

 

5. warning:  #177-D: variable "temp" was declared but never referenced

描述:變量'temp'進(jìn)行了聲明但沒有引用.多出現(xiàn)在聲明了一個變量,但卻沒有使用它,它和warning:  #550-D: variable "temp" was set but never used不同之處在于temp從沒有使用過.

解決:若是定義的變量確實沒有用,刪除掉;若是有用,則在程序中使用.

與該警告類似的還有 warning:  #177-D: function "MACProcessBeacon" was declared but never referenced

 

6. warning:  #940-D: missing return statement at end of non-void function "DealwithInspect2"

描述:返回非空的函數(shù)"DealwithInspect2"的最后缺少返回值聲明.

 

7..warning:  #1295-D: Deprecated declaration lcd_init - give arg types

描述:在定義函數(shù)的時候,如果你寫上函數(shù)參數(shù),就會有這個警告,比如void timer_init(); 這里就沒有形參,如果這樣的話,編譯器會給出警告.