共用方式為


警告 C28193

變數會保存必須檢查的值

這個警告表示呼叫函式不會檢查函式所提供的指定變數值。 傳回的值會加上 _Check_return_ 批注,但呼叫函式不會使用 值或覆寫值而不檢查該值。

此警告類似於警告 C6031,但只有在程式代碼未測試或檢查變數的值時,才會報告,例如在比較中使用變數。 只要指派值並不算是足夠的檢查,以避免出現這個警告。 將函式的結果別名視為足夠的檢查,但結果本身應該加上 _Check_return_批注。

某些函式(例如 strlen) 幾乎完全針對其傳回值而存在,因此具有註釋是合理的 _Check_return_ 。 針對這些函式,當傳回值未使用時,程式代碼分析工具可能會報告這個警告。 此警告通常表示程式代碼不正確,例如,它可能包含可刪除的剩餘程序代碼。 不過,在某些罕見情況下,不會刻意使用傳回值。 這些實例最常見的是傳回字串長度,但在進行其他測試之前,不會實際使用。 其他測試會導致模擬路徑,其中字串長度最終未使用。 發生這種情況時,程式代碼可能是正確的,但效率可能不佳。

有兩個主要策略可以處理這些未使用傳回值的情況:

重新排序程序代碼,讓字串長度只會沿著所需的路徑傳回。

#pragma使用警告來隱藏警告--如果重新排序程序代碼,您會讓程式代碼變得太複雜或不太有用。

範例

下列程式碼範例會產生此警告:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
//...

下列程式碼範例可避免此警告:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
//...
if (nMapRegs < MIN_REQUIRED_MAPS) {
//...
}