假設我們有一個聲明爲以下功能:隱式轉換傳遞參數時,函數C語言
void myFunct(unsigned char a);
在我的主程序我把它叫做這樣myFunct(5000)
,我得到這樣的警告: 「整數轉換導致截斷「。 編譯器警告我說,我經過大於255
值無論如何,如果一個聲明一個變量const ulong test = 5000
,我把它傳遞給myFunct myFunct(test)
,編譯器不提醒我差不多的可能問題。
任何人都可以解釋我這種行爲嗎?
這個缺失的警告在我的代碼中引起了一個惱人的錯誤,我現在害怕這些問題可能出現在其他地方。
我試過不同的編譯器,如MinGW和GHS版本5(GreenHills),都沒有警告我關於報告的問題。
任何人都可以告訴我,如果有辦法來防止這種問題?
嘗試靜態C/C++代碼分析工具:cppcheck,viva64等 – Ilya 2014-08-28 09:09:00