티스토리 뷰

Programming Languages/C,C++

TCHAR의 정의

sw편한세상 2011. 5. 1. 16:39
Windows시스템에서 (리눅스는 아닐듯) 유니코드와 MBCS(Multi Byte Character Set)을 지원하기 위해 TCHAR을 사용한다.
 MS에서 제작한것이라고 생각

일반적으로 tchar.h을 include 한 후 TCHAR을 사용하게 되는데, 이것에 대한 상세 내용을 보면 다음과 같다.

하지만 tchar.h에는 _UNICODE에 대한 정의만 있고, UNICODE에 대한 정의는 안보인다. 못찾는것일수도있고..

UNICODE는 타입에 대한 정의고, _UNICODE는 _txxx 들어간 함수에 대한 정의 이다.
typedef char    CHAR;
typedef wchar_t WCHAR;

#define CONST  const
typedef CHAR*   LPSTR;
typedef CONST CHAR*     LPCSTR;
typedef CONST WCHAR*    LPCWSTR;
typedef WCHAR*  LPWSTR;

#ifdef UNICODE
    typedef WCHAR   TCHAR;
    typedef LPWSTR  LPTSTR;
    typedef LPCWSTR LPCTSTR;
#else
    typedef CHAR    TCHAR;
    typedef LPSTR   LPTSTR;
    typedef LPCSTR  LPCTSTR;
#endif


#ifdef _UNICODE
    #define __T(x)      L ## x
    #define _tmain      wmain
    #define _tcslen     wcslen
    #define _tcscat     wcscat
    #define _tcscpy     wcscpy
    #define _tcsncpy    wcsncpy
    #define _tcscmp     wcscmp
    #define _tcsncmp    wcsncmp
    #define _tprintf    wprintf
    #define _tscanf     wscanf
    #define _fgetts     fgetws
    #define _fputts     fputws
#else
    #define __T(x)      x
    #define _tmain      main
    #define _tcslen     strlen
    #define _tcscat     strcat
    #define _tcscpy     strcpy
    #define _tcsncpy    strncpy
    #define _tcscmp     strcmp
    #define _tcsncmp    strncmp
    #define _tprintf    printf
    #define _tscanf     scanf
    #define _fgetts     fgets
    #define _fputts     fputs
#endif

#define _T(x)       __T(x)
#define _TEXT(x)    __T(x)

댓글
04-20 19:04
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday