C6400
تحذير C6400: استخدام < اسم دالة > إلى القيام يقارن تحسس حالة الأحرف إلى ثابت السلسلة < اسم السلسلة >. تعطي نتائج غير متوقعة في لغات غير الإنكليزية
Th هو التحذير يشير إلى أن comparهوon عدم تحسس حالة الأحرف لسلسلة ثابتة هو يجري تنفيذها بطريقة تعتمد على إعدادات محلية، ومتى، تلك، comparهوon مستقلة عن إعدادات محلية موجهة.
واقتران النموذجية لعيب هذا هو سلوك غير صحيحة في المناطق الكلام بلغة غير اللغة الإنجليزية. على سبيل المثال، في التركية، ".gif" لن مطابقة ".GIF"؛ في الفيتنامية، "تسجيل الدخول" لن مطابقة "تسجيل الدخول".
يجب إنجاز مقارنات السلاسل عادة مع CompareStringدالة. إلى تنفيذ مقارنة مستقلة عن إعدادات محلية في نظام التشغيل نظام التشغيل Windows XP، يجب أن تكون معلمة الأولى ثابتة LOCALE_INVARIANT.
مثال
يلي تعليمات برمجية ينشئ هذا التحذير:
#include <windows.h>
int f(char *ext)
{
// code...
return (lstrcmpi(ext, TEXT("gif")) == 0);
}
إلى تصحيح هذا التحذير، قم بإجراء اختبار مستقلة عن إعدادات محلية ما إذا كان حرف * ext يطابق "gif" تجاهل الاختلافات الحالة العليا/السفلي، استخدم تعليمات برمجية التالية:
#include <windows.h>
int f(char *ext)
{
// code...
return (CompareString(
LOCALE_INVARIANT,
NORM_IGNORECASE,
ext,
-1,
TEXT ("gif"),
-1) == CSTR_EQUAL);
}