Aracılığıyla paylaş


C6401

C6401 Uyarı: < işlev adı > kullanma bir varsayılan yerel sabit dize için büyük küçük harf duyarsız bir karşılaştırma yapmak için < String name >.İngilizce olmayan yerel ayarlar, beklenmeyen sonuçlar verir

Bu uyarı, büyük küçük harf duyarsız bir sabit dize karşılaştırma varsayılan yerel belirtirken gerçekleştirilmekte olduğunu gösterir; genellikle, yerel bağımsız karşılaştırma tasarlanmıştır.

Bu hata tipik sonucu konuşma İngilizce olmayan yerel ayarlar doğru davranıştır.".Gif" eşleşmez". Örneğin, Türkçe,GIF"; Vietnam dilinde "LogIn", "LOGIN" eşleşmez.

CompareString ; Bağımsız değişken olarak bir yerel işlev alır Ancak, varsayılan yerel ayarda, örneğin, sabit geçirerek LOCALE_USER_DEFAULT, farklı davranışlar kullanıcının varsayılan bağlı farklı yerel ayarları neden olur.Genellikle, sabit bir dize karşı duyarlı karşılaştırmalar bir locale bağımsız karşılaştırma yapılmalıdır.

Locale bağımsız karşılaştırma kullanarak gerçekleştirmek için CompareString Windows XP'de sabit ilk parametre olmalıdır LOCALE_INVARIANT; Örneğin, yerel bağımsız test için mi gerçekleştirmek için pString büyük/küçük harf farklılıkları göz ardı ediliyor eşleşmeleri file1.gif bir çağrı gibi kullanın:

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

Örnek

Aşağıdaki kod, bu uyarı oluşturur:

include <windows.h>

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

Bu uyarı düzeltmek için şu kodu kullanın:

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

}

Ayrıca bkz.

Başvuru

CompareString