요새 윈도우 시스템 프로그래밍 공부를 시작했는데

윈도우 프로그래밍 보면 유니코드라는 게 있잖아

Petzold 책 보면 어떤 지시자가 정의되어 있으면

함수들이 전부 문자를 2바이트 기준으로 처리하고

아니면 1바이트 기준으로 처리한다고 하던데,

가끔 보면 어떤 경우에는 이게 프로그램 내에서 뒤죽박죽 되는 경우가 있더라고.


예를 들면 당근 프로젝트라고 윈API로 텍스트 편집기 만드는 프로젝트가 있는데

거기서 한글입력편집기(IME) 관련 함수들은 죄다 1바이트 기준으로 작동하는데

다른 윈API 함수들은 2바이트 유니코드 기준으로 작동해서 이거 일치시키는 게 상당히 어렵더라고.


또 윈도우 API 이용한 파일 복사 콘솔 예제에서

main()이 명령 인자로 파일 이름을 받는데

1바이트 기준으로 받더라고...... TCHAR 형식으로 받아도 나열은 그냥 1바이트처럼 되어서 파일명이 자꾸 깨져.

CreateFile() 같은 함수에 넣어보니 작동이 제대로 안 되더라고.

그래서 이 문자열을 유니코드 기준(2바이트)으로 바꿔서 API 함수에 넣어줘야 하는데

이런 게 좀 번거롭고 복잡한 것 같아서... 실수도 많이 하게 될 것 같고...

예제랑 자꾸 다르게 코딩해야 하니 뭔가 찜찜하기도 하고...


그래서, 내가 묻고 싶은 건 코딩할 때는 윈도우 API 함수들이 대부분 유니코드 기준으로 작동하는데

이걸 그냥 1바이트 기준으로 작동할 수 있게 정의하는 방법이 있어?

(좀 더 정확히 말하면 예를 들어 CreateFileW()함수가 아닌 그냥 CreateFileA()함수가 선택되게 하는 방법)

이를 테면, #define을 이용해서 유니코드 아닌 1바이트 기준으로 함수들이 정의되게 하는 방법 같은 거......


아니면 다른 방법이라도......