Aracılığıyla paylaş


C6400

Uyarı C6400: sabit dizeye <string name> büyük küçük harf duyarsız bir karşılaştırma gerçekleştirmek için < işlev adı > kullanımı.İngilizce olmayan yerel ayarlar, beklenmeyen sonuçlar ortaya çıkarır

Bu uyarı, görünüşe göre yerel alana bağımsız karşılaştırma tasarlandığı zaman, bir sabit dizeye büyük küçük harf duyarsız bir karşılaştırmanın yerel ayara bağımlı bir şekilde gerçekleştirildiğini gösterir.

Bu hatanın tipik sonucu İngilizce konuşulmayan yerel ayarlarda yanlış davranıştır.Örneğin Türkçe'de ".gif", "GIF" ile eşleşmez; Vietnam dilinde "LogIn", "LOGIN" ile eşleşmez.

Dize karşılaştırmaları genellikle CompareString işlevi ile birlikte gerçekleştirilir.Windows XP'de bir yerel ayarlar bağımsız karşılaştırma gerçekleştirmek için, ilk parametre sabit olmalıdır LOCALE_INVARIANT.

Örnek

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

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

Bu uyarı düzeltmek için, char * ext "GIF büyük/küçük harf farklılıkları göz ardı etmesine göre yerel ayarlardan bağımsız bir test gerçekleştirin, şu kodu kullanın:

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

Ayrıca bkz.

Başvuru

CompareString