共用方式為


C6400

警告 C6400: 使用 <function name> 執行與常數字串 <string name> 的不區分大小寫的比較。在非英文地區設定中產生未預期的結果

這則警告指出在明確要進行與地區設定無關的比較時,卻以地區設定相關方式執行與常數字串之不區分大小寫的比較。

這項缺失的常見後果是在非英文之地區設定中產生不正確的行為。例如,在土耳其文地區設定中,".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);
}

請參閱

參考

CompareString