C6400
Aviso C6400: Usando o <nome da função > para executar um caso-diferenciação de comparar a seqüência constante < nome de seqüência de caracteres >.Produz resultados inesperados em localidades inglês
Este aviso indica que um caso-comparação de maiúsculas e minúsculas em uma seqüência de caracteres constante está sendo executada de forma dependente de localidade, quando, aparentemente, uma comparação independente de localidade foi criada.
A conseqüência típica esse defeito é um comportamento incorreto em localidades fala inglês.Por exemplo, em turco, ".gif" não coincidirá ".GIF"; em vietnamita, "LogIn" não coincidirá "LOGIN".
Comparações de seqüência de caracteres geralmente devem ser executadas 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 "gif" Ignorar diferenças de maiúsculas superior/inferior de correspondência, 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);
}