C6401

Aviso C6401: usando < nome da função > em uma localidade padrão para executar um comparar maiúsculas e minúsculas para string constante < o nome de seqüência de caracteres >.Gera resultados inesperados em localidades inglês

Este aviso indica que está sendo executada uma comparação de maiúsculas e minúsculas para uma seqüência de caracteres constante ao especificar a localidade padrão; Normalmente, uma comparação independente de localidade foi criada.

A conseqüência típica esse defeito é um comportamento incorreto em localidades de fala inglês.Por exemplo, em turco, ". gif" não corresponderão".GIF"; no vietnamita, "LogIn" não corresponderão "LOGIN".

O CompareString função usa uma localidade como um argumento; No entanto, passando uma localidade padrão, por exemplo, a constante LOCALE_USER_DEFAULT, fará com que os comportamentos diferentes em locais diferentes, dependendo do padrão do usuário.Normalmente, as comparações diferenciam maiúsculas de minúsculas em relação a uma seqüência de caracteres constante devem ser executadas em uma comparação independente de localidade.

Para executar uma comparação independente de localidade usando CompareString no Windows XP, o primeiro parâmetro deve ser a constante LOCALE_INVARIANT; Por exemplo, para realizar um teste independente de localidade para se pString file1.gif de correspondências, ignorando as diferenças de maiúsculas e minúsculas, use uma chamada como:

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

Exemplo

O código a seguir gera este aviso:

include <windows.h>

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

Para corrigir esse aviso, use o código a seguir:

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

}

Consulte também

Referência

CompareString