天天看點

c語言中文網_C語言程式的錯誤和警告

一段C語言代碼,在編譯、連結和運作的各個階段都可能會出現問題。編譯器隻能檢查編譯和連結階段出現的問題,而可執行程式已經脫離了編譯器,運作階段出現問題編譯器是無能為力的。

如果我們編寫的代碼正确,運作時會提示沒有錯誤(Error)和警告(Warning),如下圖所示:

c語言中文網_C語言程式的錯誤和警告

圖1:Dev C++ 的提示

c語言中文網_C語言程式的錯誤和警告

圖2:VC 6.0 的提示

c語言中文網_C語言程式的錯誤和警告

圖3:C-Free 5.0 的提示

對于 VS、GCC、Xcode 等,如果代碼沒有錯誤,它們隻會顯示“生成成功”,不會顯示“0個錯誤,0個警告”,隻有代碼真的出錯了,它們才會顯示具體的錯誤資訊。

錯誤(Error)表示程式不正确,不能正常編譯、連結或運作,必須要糾正。

警告(Warning)表示可能會發生錯誤(實際上未發生)或者代碼不規範,但是程式能夠正常運作,有的警告可以忽略,有的要引起注意。

錯誤和警告可能發生在編譯、連結、運作的任何時候。

例如,

puts("C語言中文網")

最後忘記寫分号

;

,就會出現錯誤,如下圖所示:

c語言中文網_C語言程式的錯誤和警告

圖4:VS2015 的錯誤提示

c語言中文網_C語言程式的錯誤和警告

圖5:Dev C++ 的錯誤提示

c語言中文網_C語言程式的錯誤和警告

圖6:VC 6.0 的錯誤提示

c語言中文網_C語言程式的錯誤和警告

圖7:C-Free 5.0 的錯誤提示

可以看出,C-Free 的錯誤提示資訊比較少,不友善程式員糾錯。VC 和 VS 的錯誤資訊類似,隻是中英文的差别。

下圖分析了 VC 6.0 的錯誤資訊:

c語言中文網_C語言程式的錯誤和警告

圖8:錯誤資訊說明

翻譯:源檔案 E:cDemohello.c 第5行發生了文法錯誤,錯誤代碼是 C2143,原因是 'return' 前面丢失了 ';'。

我敢保證,你寫的代碼肯定會發生錯誤,一定要有分析錯誤的能力,這是一個合格的程式員必備的技能。