시스템 프로그래밍

2-2 MBCS와 WBCS 동시 지원

CalebHong 2022. 5. 9. 10:38

#include<windows.h> 안에는

* Window 정의 자료형

typedef char -> CHAR;

typedef wchar_t -> WCHAR;

 

프로젝트 별로 네이밍을 달리하기도 해서 적절한 타입의 네이밍을 사용하면 된다.

 

* MBCS와 WBCS 동시 지원 매크로

- 조건부 컴파일을 사용

#ifndef UNICODE

typedef WCHAR TCHAR;

...

#else

typedef CHAR TCHAR;

...

#endif

 

#ifndef _UNICODE

    #define __T(x) L##

#else

    #define __T(x) x

 

#define _T(x) __T(x)

#define _TEXT(x) __T(x)

 

* MBCS와 WBCS 동시 지원 함수

#ifdef _UNICODE

    #define _tmain wmain

    #define _tcslen wcslen

    #define _tprintf wprintf

    #define _tscanf wscanf

#else

    #define _tmain main

    #define _tcslen strlen

    #define _tprintf printf

    #define _tscanf scanf

#endif

 

사용 예

LPTSTR str1 = _T("MBCS or WBCS 1");
TCHAR str2[] = _T("BCS or WBCS 2");
TCHAR str3[100];
TCHAR str4[50];

LPCTSTR pStr = str1;

_tprintf(_T("string size: %d \n"), sizeof(str2));
_tprintf(_T("string length: %d \n"), _tcslen(pStr));

_fputts(_T("Intput Streing 1: ", stdout);
_tscanf(_T("%s"), str3);