Warnung C6031
Der Rückgabewert wird ignoriert: „called-function“ gibt gegebenenfalls. unerwarteten Wert zurück
Hinweise
Warnung C6031 gibt an, dass der Aufrufer den Rückgabewert einer Funktion nicht auf Fehler überprüft. Je nachdem, welche Funktion aufgerufen wird, kann dieser Fehler zu scheinbar zufälligen Programmfehlern führen. Dazu gehören Abstürze und Datenbeschädigungen bei Fehlerbedingungen oder in Situationen mit Ressourcenknappheit.
Im Allgemeinen ist es nicht sicher, davon auszugehen, dass Aufrufe von Funktionen, die Datenträger, Netzwerke, Arbeitsspeicher oder andere Ressourcen erfordern, erfolgreich ausgeführt werden. Der Aufrufer sollte immer den Rückgabewert überprüfen und Fehlerfälle entsprechend handhaben. Erwägen Sie auch die Verwendung der _Must_inspect_result_
-Anmerkung, die überprüft, ob der Wert auf nützliche Weise untersucht wird.
Diese Warnung gilt sowohl für C- als auch für C++-Code.
Name der Codeanalyse: RETVAL_IGNORED_FUNC_COULD_FAIL
Beispiel
Der folgende Code generiert die Warnung C6031:
#include <stdio.h>
int main()
{
fopen("test.c", "r"); // C4996, C6031 return value ignored
// code ...
}
Um diese Warnung zu korrigieren, überprüfen Sie den Rückgabewert der Funktion wie im folgenden Code dargestellt:
#include <stdio.h>
int main()
{
FILE* stream;
if ((stream = fopen("test.c", "r")) == NULL)
{
return;
}
// code ...
}
Der folgende Code verwendet die sichere Funktion fopen_s
, um diese Warnung zu korrigieren:
#include <stdio.h>
int main()
{
FILE* stream;
errno_t err;
if ((err = fopen_s(&stream, "test.c", "r")) != 0)
{
// code ...
}
}
Diese Warnung wird auch generiert, wenn der Aufrufer den Rückgabewert einer Funktion ignoriert, die mit der _Check_return_
-Eigenschaft versehen wurde, wie im folgenden Code dargestellt.
#include <sal.h>
_Check_return_ bool func()
{
return true;
}
int main()
{
func();
}
Um die vorherige Warnung zu korrigieren, überprüfen Sie den Rückgabewert wie im folgenden Code dargestellt:
#include <sal.h>
_Check_return_ bool func()
{
return true;
}
int main()
{
if (func())
{
// code ...
}
}
In Fällen, in denen der Rückgabewert einer Funktion ignoriert werden muss, weisen Sie std::ignore
den zurückgegebenen Wert zu. Das Zuweisen zu std::ignore
weist eindeutig auf Entwicklerabsicht hin und hilft bei der zukünftigen Codewartung.
#include <tuple>
#include <ctime>
#include <cstdlib>
#include <stdio.h>
int main()
{
std::srand(static_cast<unsigned int>(std::time(nullptr))); // set initial seed value to system clock
std::ignore = std::rand(); // Discard the first result as the few random results are always small.
// ...
}
Weitere Informationen
fopen_s
, _wfopen_s
Verwenden von SAL-Anmerkungen zum Reduzieren von Codefehlern