keil MDK編譯器警告和錯誤詳解

2021-06-03 12:40:57 字數 963 閱讀 4983

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

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

解決:仔細衡量所定義的變數d是否有用,若是認定變數d所在語句有意義,那麼嘗試用volatile關鍵字修飾變數d,若是真的沒有用,那麼刪除掉以釋放可能的記憶體.

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

描述:檔案最後一行不是新的一行.編譯器要求程式檔案的最後一行必須是空行,想了半天沒想通為什麼要這樣.

解決:可以不理會.若是覺得出現警告不爽,那麼在出現警告的檔案的最後一行敲個回車,空出一行.

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

描述:宣告不可能到達.多出現在這種場合:

int main(void)

{...

while(1) //無限迴圈,這在不使用作業系統的程式中最常見

{4.line 10: warning: function declared implicitly

這是由於沒有宣告函式原型造成的。

在a.c中,

void main()

delay();

在b.c中

void delay()

如果就只是這樣的話,就會出現上面的worning的。

解決辦法是在b.h中寫 extern void delay();然後在a.c中include "b.h"就ok了。

再看程式,發現只包含了dsp281x_device.h,後來把dsp281x_examples.h新增進去就消除worning了。

dsp281x_examples.h中又include「dsp281x_globalprototypes.h」,而這個標頭檔案中宣告了全部的外部函式

keil MDK編譯器警告和錯誤詳解

1.warning 550 d variable d was set but never used 描述 變數 d 定義但從未使用,或者是,雖然這個變數你使用了,但編譯器認為變數d所在的語句沒有意義,編譯器把它優化了.解決 仔細衡量所定義的變數d是否有用,若是認定變數d所在語句有意義,那麼嘗試用vo...

編譯器警告和錯誤詳解

原文 1.warning 550 d variable d was set but never used 描述 變數 d 定義但從未使用,或者是,雖然這個變數你使用了,但編譯器認為變數d所在的語句沒有意義,編譯器把它優化了.解決 仔細衡量所定義的變數d是否有用,若是認定變數d所在語句有意義,那麼嘗試...

keil mdk編譯器學習筆記(1) 序

這兩天,學習了keil mdk編譯器的特性,這基本上獨立於c語言語法,平時基本上都在強調c語言的學習,但是編譯器的學習我們也要注重,類似於gcc一樣,不也有很多網上的資料,講述gcc的特性和用法嗎。作為嵌入式開發,keil mdk的特性也是要了解到,另外,iar編譯器也是有其特有的程式設計技巧的,因...