728x90

 

MBCS와 WBCS

- 기존에 개발된 프로그램과의 호환성 및 지원하지 않는 환경에서 사용하는 사용자가 있을 수 있기 때문에 WBCS만으로 구현하기 어려움

- MBCS와 WBCS 각각 프로그램을 구현하면 배포 및 개발에 어려움이 있음

- 여러 이유때문에 MBCS와 WBCS를 동시에 지원하는 프로그램을 짜는 것이 좋음

 

MBCS와 WBCS 동시 지원 매크로

- windows.h

typedef char		CHAR;
typedef wchar_t		WCHAR;

#define CONST		const
typedef CHAR*		LPSTR;
typedef CONST CHAR*	LPCSTR;

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

- UNICODE가 정의되면 TCHAR는 WCHAR -> wchar_t가 되고 아닐 시 TCHAR는 CHAR -> char이 됨

#ifdef _UNICODE
    #define __T(x)		L##x		// __T("ABC") -> L"ABC"
    #define _tmain		wmain
    #define _tcslen		wcslen
    #define	_tprintf	wprintf
    #define _tscanf		wscanf
#else
    #define __T(x)	x
    #define _tmain		main
    #define _tcslen		strlen
    #define	_tprintf	printf
    #define _tscanf		scanf
#endif

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

- _UNICODE가 정의되면 _T("ABC")는 __T("ABC") -> L"ABC"가 되고 아닐 시 _T("ABC")는 __T("ABC") -> "ABC"가 됨

- 즉 매크로 정의 여부에 따라 MBCS, WBCS 형식을 따르게 됨

 

728x90

+ Recent posts