Programming/C / C++
문자열 _T("")와 L""
역시인생한방
2015. 2. 7. 19:53
_T 매크로는
_T("문자열") 이라고 썼을때
_UNICODE가 define 되어 있으면 L"문자열" 을 리턴하고
define되어있지 않으면 그냥 "문자열" 을 리턴 합니다.
문자열 앞에 L 접두사가 붙으면 그 문자열은 유니코드 형태로 인식 되는겁니다.
만일 tchar.h전에 _UNICODE 가 define 되면 다음과 같이 정의됩니다.
자세히 하면
#define __T(x) L##x
즉 __T("Melong") 은 L"Melong" 으로 치환되게 됩니다.
정의되어 있지 않으면 다음과 같이
#define __T(x) x
네, __T("x") 는 그냥 "x" 입니다.
그리고 다음과 같이 또 define 되어 있죠
#define _T(x) __T(x)
#define _TEXT(x) __T(x)
_T 대신 _TEXT라고 써도 됩니다.
L"Melong"이 황당하시죠? 이것은 C++ 문법으로 확장 문자열을 뜻합니다.
다음과 같이 확장문자열 포인터를 지정할 수 있죠
wchar_t *p = L"Melong!";
쉽게 여러 언어를 지원하는 프로그램을 만들기 위해 쓰는 것이다 라고 생각하세요.
출처 : http://blog.naver.com/PostView.nhn?blogId=monkeies&logNo=20101792106