Warnung C26863

Der Rückgabewert einer Datum-Uhrzeit-Verarbeitungsfunktion func wird ignoriert.

Diese Regel wurde in Visual Studio 2022 17.8 hinzugefügt.

Hinweise

Es ist wichtig, den Rückgabewert einer Funktion zu überprüfen, die eine Datumsstruktur transformiert, als das Argument "Jahr", "Monat" oder "Datumseingabe" ohne ordnungsgemäße Behandlung des Schaltjahrs bearbeitet wurde. Andernfalls ist die Funktion möglicherweise fehlgeschlagen, und die Ausführung wird mit einem Ausgabeparameter fortgesetzt, der ungültige Daten enthält.

Es folgt eine Liste der Funktionen, die von dieser Warnung abgedeckt werden:

Codeanalysename: DATETIME_MANIPULATION_FUNCTION_RETURN_IGNORED

Beispiel

Der folgende Code versucht, die aktuelle Systemzeit abzurufen, das Monatsfeld um einen Monat vorauszuschreiten und die Dateizeit abzurufen, die der aktualisierten Systemzeit SystemTimeToFileTimeentspricht. Möglicherweise tritt jedoch ein Fehler auf, SystemTimeToFileTime da die aktualisierte Systemzeit ungültig wird:

#include <Windows.h> 
 
void foo() 
{ 
    FILETIME ft; 
    SYSTEMTIME st; 
    GetSystemTime(&st); 
    st.wMonth++; // Advance month by one 
    // Get the file time 
    SystemTimeToFileTime(&st, &ft);    // C26863 
}

Um das Problem zu beheben, überprüfen Sie immer den Rückgabewert von Bearbeitungsfunktionen für Datum und Uhrzeit, und behandeln Sie Fehler entsprechend:

#include <Windows.h> 
  
void foo() 
{ 
    FILETIME ft; 
    SYSTEMTIME st; 
    GetSystemTime(&st); 
    
    st.wMonth++; // Advance month by one 
    // Get file time 
    if (SystemTimeToFileTime(&st, &ft)) 
    { 
        // Use file time 
    } 
}

Heuristik

Diese Regel erkennt nur die Windows-Struktur SYSTEMTIME und die C-Struktur tm .

Diese Regel wird unabhängig davon erzwungen, ob die Eingabeargumente vor dem Aufrufen dieser Funktionen überprüft wurden. Wenn alle Eingabeargumente vor dem Aufrufen der Funktion überprüft werden, kann diese Regel eine falsche Warnung melden.

Diese Regel ist eine Opt-In-Regel, d. h. die Codeanalyse sollte eine Regeldatei verwenden, und die Regel sollte explizit in die Regeldatei aufgenommen und aktiviert werden, damit sie angewendet werden kann. Weitere Informationen zum Erstellen eines benutzerdefinierten Regelsets für die Codeanalyse finden Sie unter Verwenden von Regelsätzen zum Angeben der C++ auszuführenden Regeln.

Siehe auch

C6393
C6394
C26861
C26862
C26864