#36. _T(“”) 매크로에 대하여

클래스 위저드나 기타의 MFC용 내부 유틸리티로 CString 변수를 선언하고 나면 항상 초기화 선언에 _T(“”)라는 명령어가 포함되어있는것을 보아왔습니다. 하지만, 정확히 이것이 무엇인지 개념이 아리송해서 모르고 지나가기가 쉽습니다만, 확실히 정리하죠.


일단 _T(“”)와 같이 세미콜론이 없는 상태에서 종결되는 구문들이 MFC에서는 다수 존재합니다. 이러한 구문들은 모두 매크로 구문이라고 부르고 있는 것들이며, 몇 줄의 코드나 복잡한 함수식을 간단한 매크로 구문 하나로 압축해놓은 것이 일반적입니다.


이런 매크로 함수들이 리턴해주는 값들은 클래스보다도 주로 Win32 환경에서 쓰이는 데이터타입들을 리턴해주게 됩니다. 예를 들면, 핸들 값이나 LPCTSTR, LPVOID 값들이 그런 것들이죠.


그렇다면, _T(“”)의 실제 리턴값은 무엇일까요? 바로, 아무것도 들어있지 않은 NULL 상태의 LPCTSTR 변수값입니다. 즉, 초기화를 의미하는 내용이죠.


그러면 CString에서 이 값을 어떤 과정을 통해서 받아들이게 되는지는 자동으로 계산이 나오게 됩니다. 네, 그렇습니다. 바로 연산자 오버로딩에 의해서 처리되죠. CString 선언을 찾아보면 = (Equal) 연산자 오버로딩이 LPCTSTR 또는 CString을 처리하도록 서술되어있습니다.


결국은 아무 값도 없는 LPCTSTR을 CString에 던져준다는 것이 됩니다.


이 Chapter에서 알아두셔야 할 점은 초기화 방법이 때로는 매크로 함수에 의해서 이루어지기도 할 수 있음입니다.

댓글 남기기