Aracılığıyla paylaş


Uyarı C28193

Değişken, incelenmesi gereken bir değer barındırıyor

Bu uyarı, çağıran işlevin bir işlev tarafından sağlanan belirtilen değişkenin değerini denetlemediğini gösterir. Döndürülen değere ek açıklama eklenir _Check_return_ , ancak çağıran işlev değeri kullanmıyor veya incelemeden değerin üzerine yazılıyor.

Bu uyarı C6031 uyarılarına benzer, ancak yalnızca kod değişkenin değerini test etmediğinde veya incelemediğinde (örneğin, bir karşılaştırmada kullanarak) bildirilir. Yalnızca değeri atamak, bu uyarıyı önlemek için yeterli bir inceleme olarak kabul edilmez. sonucu işlev dışında diğer adla ifade etmek yeterli bir inceleme olarak kabul edilir, ancak sonucun kendisine ile _Check_return_ek açıklama eklenmelidir.

Bazı işlevler (örneğin strlen) neredeyse yalnızca dönüş değerleri için vardır, bu nedenle ek açıklamaya _Check_return_ sahip olmaları mantıklıdır. Bu işlevler için Kod Çözümleme aracı, dönüş değeri kullanılmadığında bu uyarıyı bildirebilir. Bu uyarı genellikle kodun yanlış olduğunu gösterir, örneğin silinebilecek artık kod içerebilir. Ancak bazı nadir durumlarda dönüş değeri kasıtlı olarak kullanılmaz. Bu örneklerin en yaygın olanı, bir dize uzunluğunun döndürüldüğü ancak başka bir test yapılmadan önce aslında kullanılmadığı yerdir. Bu diğer test, dize uzunluğunun kullanılmadığı bir yolun benzetimini yapılmasına neden olur. Bu durumda kod doğru olabilir, ancak verimsiz olabilir.

Dönüş değerinin kullanılmadığı bu durumlarla ilgilenmek için iki birincil strateji vardır:

Dize uzunluğunun yalnızca gerekli olduğu yol boyunca döndürülmesi için kodu yeniden sıralayın.

Uyarıyı engellemek için bir #pragma uyarı kullanın; kodu yeniden sıralayarak kodu çok karmaşık veya başka bir şekilde daha az kullanışlı hale getirirsiniz.

Örnek

Aşağıdaki kod örneği bu uyarıyı oluşturur:

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

Aşağıdaki kod örneği bu uyarıyı önler:

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