最近,處理乙個中介軟體中所有的warning,經過編譯發現警告資訊多如牛毛,而且這個中介軟體還是乙個國內絕對一流的公司做的,要是一直這樣下去,不知道中國的軟體什麼時候才能夠達標啊!!!
下面對出現的警告簡單的總結一下:
1、賦值型別不符,這也是最常見的;
解決辦法可以強制型別轉換
2、實參形參型別不一致;
解決辦法可以強制型別轉換。
3、隱式呼叫函式,連線了庫,但沒有連線相應的標頭檔案;
解決辦法可以用extern引入函式原型。
4、條件判斷中的賦值,這個比較隱晦,一般不容易找出,下面舉例說明一下;
int pre_flag = 0, cur_flag = 1;
if (pre_flag = cur_flag)
...上面if語句看似沒有什麼問題,但在gcc編譯的時候會報警告(warning: suggest parentheses around assignment used as truth value),
這是由於gcc編譯器為了提醒程式設計師在條件判斷中,要注意「==」和「=」的區別,即編譯器會以為你錯將「==」寫成「=」了,於是提醒一下。
因為在c語言中,條件判斷只有兩個值:非真(0)和真(!0),所以上面if語句我們應該修改為if ((pre_flag = cur_flag)),總之在條件判斷時,一定要謹慎。
5、上面幾種的組合;
好像還處理了其他型別的warning,但一時記不起來了,有時間再補上,也希望大家把自己遇到的warning也貼上,大家共同學習,
最後,希望大家一起努力將**寫得更規範,將warning當成error處理。
c語言常見warning的消除方法及重要性
消除編譯過程中出現warning告警的重要性 在編譯 過程中,要注意對warning告警的消除,雖說一般warning是不會影響編譯結果的,但是由warning引起的問題一般不好查詢原因,所以在提交 或者自己寫 的時候,一定要盡量的消除warning告警。一面以一些例項來說明消除warning告警的...
處理「warning」的重要性
今天調 出現乙個奇怪的情況,乙個按鈕要按兩次才會起效,而且在debug模式下不會發生,只在release模式出現。正常的思維肯定是如果返回值不是true的話,就執行最下面那一句,繼續把訊息分發出去。但是,好死不死我的tempkeydown寫得有問題,不是所有條件都有返回值。在debug模式下執行沒什...
iOS開發常見警報Warning和Bug修復
解決方法 在podfile檔案中 增加一句inhibit all warnings 解決方法 project targets build setting library search paths,刪除對應路徑 解決方法 project targets build setting framework ...