Freigeben über


Warnung C28193

Die Variable enthält einen Wert, der überprüft werden muss.

Diese Warnung gibt an, dass die aufrufende Funktion den Wert der angegebenen Variablen, die von einer Funktion bereitgestellt wurde, nicht überprüft. Der zurückgegebene Wert wird mit der _Check_return_ Anmerkung kommentiert, aber die aufrufende Funktion verwendet entweder nicht den Wert oder überschreibt den Wert, ohne ihn zu untersuchen.

Diese Warnung ähnelt der Warnung C6031, wird jedoch nur gemeldet, wenn der Code den Wert der Variablen nicht testt oder untersucht, z. B. indem er ihn in einem Vergleich verwendet. Das Einfache Zuweisen des Werts wird nicht als ausreichende Untersuchung betrachtet, um diese Warnung zu vermeiden. Das Aliasing des Ergebnisses aus der Funktion wird als ausreichende Untersuchung betrachtet, aber das Ergebnis selbst sollte mit _Check_return_Anmerkungen versehen werden.

Bestimmte Funktionen (z strlen. B. ) sind fast ausschließlich für ihren Rückgabewert vorhanden, daher ist es sinnvoll, dass sie die _Check_return_ Anmerkung haben. Bei diesen Funktionen meldet das Codeanalysetool diese Warnung möglicherweise, wenn der Rückgabewert nicht verwendet wird. Diese Warnung weist in der Regel darauf hin, dass der Code falsch ist, z. B. einen Restcode enthalten kann, der gelöscht werden kann. In einigen seltenen Fällen wird der Rückgabewert jedoch absichtlich nicht verwendet. Die häufigsten dieser Instanzen sind, in denen eine Zeichenfolgenlänge zurückgegeben wird, aber nicht tatsächlich verwendet wird, bevor ein anderer Test durchgeführt wird. Dieser andere Test bewirkt, dass ein Pfad simuliert wird, bei dem die Zeichenfolgenlänge nicht verwendet wird. In diesem Fall kann der Code korrekt sein, kann aber ineffizient sein.

Es gibt zwei primäre Strategien für den Umgang mit diesen Fällen, in denen der Rückgabewert nicht verwendet wird:

Ordnen Sie den Code neu an, sodass die Länge der Zeichenfolge nur entlang des Pfads zurückgegeben wird, in dem er benötigt wird.

Verwenden Sie eine #pragma Warnung, um die Warnung zu unterdrücken – wenn Sie den Code neu anordnen, würden Sie den Code zu komplex oder anderweitig weniger nützlich machen.

Beispiel

Im folgenden Codebeispiel wird diese Warnung generiert:

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

Im folgenden Codebeispiel wird diese Warnung vermieden:

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