2013-05-22 20 views
1
#ifdef TEST 
#define INVALID_HANDLE_VALUE 0 
#else 
#include <windows.h> 
#endif 


int main() 
{ 
HANDLE hf = 0; 
if (hf==0 || hf==INVALID_HANDLE_VALUE) 
{} 
} 

上述同樣的表情是我的測試代碼,當我使用cppcheck.exe(1.58),以檢查這個代碼,cppcheck會給我喜歡 enter image description here 這似乎是一個「風格」的錯誤要cppcheck認爲hf == 0和hf == INVALID_HANDLE_VALUE是相同的表達式。 任何人都可以告訴我這是cppcheck的bug還是爲什麼這段代碼是風格錯誤cppcheck:雙方也許錯

回答

1

我是Cppcheck的開發者。

我同意這是一個錯誤的警告。

但是Cppcheck預處理代碼。所以如果你確實想要對真實的問題發出警告,那麼這樣的錯誤警告是不可避免的(條件在邏輯上是相同的)。

也許這個檢查應該由--inconclusive激活,因爲使用宏時可能會出現錯誤的警告。

如果你可以接受虛假警告,那麼我建議你這樣做。如果你想這是固定的,隨時寫一張票: http://sourceforge.net/apps/trac/cppcheck/