C28715
警告 C28715:在語意上不同的整數類型之間轉換
這個警告表示布林值正轉換成 NTSTATUS。 這可能會產生不想要的結果。 例如,傳回布爾值 (FALSE) 的函式的一般失敗值,是當測試為 NTSTATUS時的成功狀態。
一般而言,傳回布爾值的函式會傳回 1 (針對 TRUE) 或 0 (針對 FALSE)。 這兩個值都會由 NT_SUCCESS 巨集視為成功碼。 因此,永遠不會偵測到失敗案例。
範例
PREfast 會報告下列範例的警告。
extern BOOL SomeFunction(void);
if (NT_SUCCESS(SomeFunction())) {
return 0;
} else {
return -1;
}
下列範例會避免錯誤。
extern BOOL SomeFunction(void);
if (SomeFunction() == TRUE) {
return 0;
} else {
return -1;
}