_T()는 매크로일 뿐이고 마이크로소프트 환경에서 Unicode prepared한 코드를 작성하기 위한 것임. TCHAR는 빌드할 때 프로젝트 환경에 따라 _UNICODE, UNICODE가 define되어 있을 때 WCHAR, CHAR 중 한 쪽을 사용하도록 하는 매크로임.
guest5(lianne79)2015-04-30 22:44
난 이게 컴파일되는게 더신기한데..
잉여(1.217)2015-04-30 22:44
즉 윈도우 환경에선 널 스트링 관련 함수들은 가능하면 TCHAR 관련 함수 즉 _tprintf()같은 것을 사용하는 것이 좋은 습관임. 단 이건 리눅스에서는 동작하지 않는 코드임.
guest5(lianne79)2015-04-30 22:45
TCHAR 헤더는 표준아닌가??
잉여(1.217)2015-04-30 22:46
아니더라도 매크로만 빼오면되는데 별어려움은 없을듯
잉여(1.217)2015-04-30 22:46
이식성 생각한 프로젝트라면 wchar_t를 쓰던지 char를 쓰던지 하나 결정하고 _T는 쓰지 말아야 함.
guest5(lianne79)2015-04-30 22:46
guest5 // 정말 감사합니다.
NoOTL(shippuden91)2015-04-30 22:51
음... wchar_t *(유니코드 문자열)로 받을 거면 L"..."로 문자열 상수를 써야 됨. 그리고 출력할 땐 %s가 아니라 %ws로 하면 됨.
ㅅㅅㅅ(125.128)2015-04-30 23:10
_tprintf를 썼더라도 넘겨주는 인자가 유니코드 문자열이면 %s가 아니라 %ws를 쓴다.
전혀 잘못 알고 있음
_T()는 매크로일 뿐이고 마이크로소프트 환경에서 Unicode prepared한 코드를 작성하기 위한 것임. TCHAR는 빌드할 때 프로젝트 환경에 따라 _UNICODE, UNICODE가 define되어 있을 때 WCHAR, CHAR 중 한 쪽을 사용하도록 하는 매크로임.
난 이게 컴파일되는게 더신기한데..
즉 윈도우 환경에선 널 스트링 관련 함수들은 가능하면 TCHAR 관련 함수 즉 _tprintf()같은 것을 사용하는 것이 좋은 습관임. 단 이건 리눅스에서는 동작하지 않는 코드임.
TCHAR 헤더는 표준아닌가??
아니더라도 매크로만 빼오면되는데 별어려움은 없을듯
이식성 생각한 프로젝트라면 wchar_t를 쓰던지 char를 쓰던지 하나 결정하고 _T는 쓰지 말아야 함.
guest5 // 정말 감사합니다.
음... wchar_t *(유니코드 문자열)로 받을 거면 L"..."로 문자열 상수를 써야 됨. 그리고 출력할 땐 %s가 아니라 %ws로 하면 됨.
_tprintf를 썼더라도 넘겨주는 인자가 유니코드 문자열이면 %s가 아니라 %ws를 쓴다.
T 타입 쓰면 좀 피곤함
하지만 나는 T 타입 씀ㅋ