http://blog.naver.com/rozio/100013783967

SBCS(Single-byte character set)
SBCS = ASCII ( 1byte), 하나의 문자를 저장하는데 한 바이트만 사용합니다.

MBCS(Multibyte character set)
한국어, 중국어, 일본어 등을 표현하기 위하여 여러바이트를 사용합니다.
그러나 실제로 여러 바이트를 사용하는 일은 없고 DBCS(double-byte character set)라고 해서
2바이트 만을 사용합니다.

UNICODE
국제 표준으로 전세계문자를 2 바이트에서 사용하자는 목적에서 만들어졌습니다.

unicode 상에서는 어떤 문자열을 대입할때 항상 문자열 앞에 L을 붙이게 됩니다.

예)
CString strTemp = L"이것은 연습입니다.";

하지만 이문자열이 unicode 가 아니라 SBCS 나 MBCS에서 사용되어질 수 있는
코드라면 호환이 가능하기 위해서 _T 를 사용합니다.(TEXT 와 같습니다.)

예)
CString strTemp = _T("이것은 연습입니다."); or
CString strTemp = TEXT("이것은 연습입니다.");

이렇게 하면 컴파일 타임에 _UNICODE로 정의가 안되어 있다면

CString strTemp = "이것은 연습니다.";
와 동일하며, unicode환경에서 컴파일 한것이라면
CString strTemp =L"이것은 연습입니다.";
와 동일합니다.

그리고 TCHAR는 SBCS/MBCS 컴파일 환경에서는 char 로 인식하지만
unicode 환경에서는 wchar_t 로 대체됩니다.

위와같은 환경은
Projects -> Settings -> C/C++tab -> preprocessor Definitions 에
보통 _MBCS가 정의되어있습니다.

TCHAR.h 파일에 마지막 정도에 _T(x)에 대한 정의가 있습니다.

Posted by 빨강토끼
,