Compartilhar via


C6400

Aviso C6400: Usando o < nome da função > para executar um comparar maiúsculas e minúsculas para string constante < nome de seqüência >. Produz resultados inesperados em localidades do inglês

Este aviso indica que uma comparação entre maiúsculas e minúsculas para uma seqüência de caracteres constante está sendo executada de forma dependente de localidade, quando, aparentemente, uma comparação independente de localidade desejada.

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

Comparações de seqüência de caracteres geralmente devem ser realizadas com o CompareString função. Para realizar uma comparação independente de localidade no Windows XP, o primeiro parâmetro deve ser a constante LOCALE_INVARIANT.

Exemplo

O código a seguir gera este aviso:

#include <windows.h>
int f(char *ext)
{
  // code...
  return (lstrcmpi(ext, TEXT("gif")) == 0);
}

Para corrigir esse aviso, executar um teste independente de localidade para se char * ext corresponde a "gif" Ignorando diferenças de maiúsculas e minúsculas, use o seguinte código:

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

Consulte também

Referência

CompareString