C6400
Предупреждение C6400: использование <имя функции> для сравнения со строкой константы <имя строки> без учета регистра. При применении для языков, отличных от английского, могут возникнуть непредвиденные результаты.
Это предупреждение указывает, что сравнение без учета регистра осуществляется для строки константы способом, зависимым от языка, когда нужно использовать сравнение, независимое от языка.
Как правило, в результате этой ошибки могут возникнуть неверные результаты для языков, отличных от английского. Например, в турецком языке ".gif" не то же самое, что ".GIF", во вьетнамском языке "LogIn" не совпадет с "LOGIN".
Для строкового сравнения следует использовать функцию CompareString. Для независимого от языков сравнения в Windows XP первый параметр должен быть константой LOCALE_INVARIANT.
Пример
Это предупреждение создается следующим кодом:
#include <windows.h>
int f(char *ext)
{
// code...
return (lstrcmpi(ext, TEXT("gif")) == 0);
}
Чтобы устранить это предупреждение, выполните независимую от языка проверку, совпадает ли char *ext с "gif", используя следующий код:
#include <windows.h>
int f(char *ext)
{
// code...
return (CompareString(
LOCALE_INVARIANT,
NORM_IGNORECASE,
ext,
-1,
TEXT ("gif"),
-1) == CSTR_EQUAL);
}