02: 아스키코드와 유니코드
01. Windows에서의 UNICODE
문자셋의 종류, 특성: 미국 정의 표준이고 1바이트로 표현되는 아스키코드, 2바이트로 표현되는 유니코드가 있다.
SBCS: Single Byte Character Set, 문자를 표현하는 데 1바이트 사용
MBCS: Multi byte Character Set, 어떤 문자는 1바이트로 어떤 문자는 2바이트로 사용
WBCS: Wide Byte Character Set, 모든 문자를 2바이트로 처리
01-1. WBCS, 유니코드 기반의 프로그래밍
char -> wchar_t
"ABC" -> L"ABC"
strlen -> wcslen
널 문자도 2바이트로 처리된다.
MBCS 방식을 지원하기 위한 main 함수가 존재한다면, 유니코드 방식을 지원하기 위한 wmain이 존재한다. 그리고 이 두 가지 방식을 모두 지원하기 위해 _tmain이 존재한다. 프로그램 실행 시 전달되는 문자열을 MBCS/SBCS 각각 다른 기반으로 구성한다.
02. MBCS와 WBCS의 동시 지원
유지보수, 배포에 많은 불편함 -> 버그로 이어질 소지
02-1. Windows 스타일 자료형
#include <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;
02-2. MBCS와 WBCS 동시 지원 매크로
#ifdef UNICODE
typedef WCHAR TCHAR;
...
#else
typedef CHAR TCHAR;
...
#endif
02-3. MBCS와 WBCS를 동시 지원하는 함수들
#ifdef _UNICODE
#define _tprintf wprintf
#else
#define _tprintf printf
#endif