다음을 통해 공유


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);
}

이 경고를 해결하려면 대/소문자를 무시하고 문자 *ext가 "gif"와 일치하는지 여부에 대해 로캘 독립적인 테스트를 수행합니다. 다음 코드를 사용합니다.

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

참고 항목

참조

CompareString