C6400
Actualización: noviembre 2007
C6400
Advertencia C6400: Se utilizará <nombre de función> para realizar una comparación con distinción entre mayúsculas y minúsculas con la cadena de constante <nombre de cadena>. Se proporcionarán resultados inesperados en las configuraciones regionales que no estén en inglés
Esta advertencia indica que se está efectuando una comparación que no distingue entre mayúsculas y minúsculas con una cadena de constante de una manera que depende de la configuración regional cuando, aparentemente, se pretendía utilizar una comparación independiente de la configuración regional.
La consecuencia típica de este defecto es un comportamiento incorrecto en configuraciones regionales de habla no inglesa. Por ejemplo, en turco, ".gif" no coincidirá con ".GIF"; en vietnamita, "Inicio de sesión" no coincidirá con "INICIO DE SESIÓN".
Las comparaciones de cadenas se deben realizar de manera habitual con la función CompareString. Para realizar una comparación independiente de la configuración regional en Windows XP, el primer parámetro debe ser la constante LOCALE_INVARIANT.
Ejemplo
El código siguiente genera esta advertencia:
#include <windows.h>
int f(char *ext)
{
// code...
return (lstrcmpi(ext, TEXT("gif")) == 0);
}
Para corregir esta advertencia, realice una comprobación independiente de la configuración regional para ver si char *ext coincide con "gif" sin tener en cuenta las diferencias entre mayúsculas y minúsculas; para ello, utilice el código siguiente:
#include <windows.h>
int f(char *ext)
{
// code...
return (CompareString(
LOCALE_INVARIANT,
NORM_IGNORECASE,
ext,
-1,
TEXT ("gif"),
-1) == CSTR_EQUAL);
}