Freigeben über


C6401

C6401

Warnung C6401: Verwendung von <Funktionsname> in einem Standardgebietsschema für einen Vergleich mit der Konstantenzeichenfolge <Zeichenfolgenname> ohne Berücksichtigung von Groß- und Kleinschreibung. Führt bei nicht englischen Gebietsschemas zu unerwarteten Ergebnissen.

Diese Warnung weist darauf hin, dass ein Vergleich mit einer Konstantenzeichenfolge ohne Berücksichtigung von Groß- und Kleinschreibung unter Angabe des Standardgebietsschemas durchgeführt wird, obwohl ein vom Gebietsschema unabhängiger Vergleich beabsichtigt war.

Dieser Fehler hat typischerweise ein fehlerhaftes Verhalten bei nicht englischen Gebietsschemas zur Folge. So stimmt in Türkisch ".gif" nicht mit ".GIF" überein, und in Vietnamesisch stimmt "LogIn" nicht mit "LOGIN" überein.

Die CompareString -Funktion nimmt ein Gebietsschema als Argument an, wenn jedoch ein Standardgebietsschema übergeben wird, z. B. die Konstante LOCALE_USER_DEFAULT, verursacht dies je nach der Standardeinstellung des Benutzers bei unterschiedlichen Gebietsschemas ein unterschiedliches Verhalten. Normalerweise sollten Vergleiche mit einer Konstantenzeichenfolge ohne Berücksichtigung von Groß- und Kleinschreibung unabhängig vom Gebietsschema durchgeführt werden.

Bei einem vom Gebietsschema unabhängigen Vergleich mithilfe von CompareString unter Windows XP sollte der erste Parameter die Konstante LOCALE_INVARIANT sein. Verwenden Sie z. B. einen Aufruf wie den folgenden, um unabhängig vom Gebietsschema und ohne Berücksichtigung von Groß- und Kleinschreibung zu testen, ob pString mit file1.gif übereinstimmt:

CompareString(LOCALE_INVARIANT,
              NORM_IGNORECASE,
              pString,
              -1,
              TEXT(“file1.gif”),
              -1) == CSTR_EQUAL 

Beispiel

Der folgende Code generiert diese Warnung:

include <windows.h>

int fd(char *ext)
{
  return (CompareString(LOCALE_USER_DEFAULT,
                        NORM_IGNORECASE,
                        ext, 
                        -1, 
                        TEXT("gif"),
                        -1) == 2);
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

include <windows.h>
int f(char *ext)
{
  return (CompareString(LOCALE_INVARIANT,
                        NORM_IGNORECASE,
                        ext, 
                        -1, 
                        TEXT("gif"),
                        -1) == 2);

}

Siehe auch

Referenz

CompareString