3. 윈도우 내의 유니코드 함수와 ANSI 함수

윈도우 NT 버젼 이후는 유니코드를 기반으로 작성됨.

ANSI 문자열을 전달하면 호출된 함수는 유니코드로 변경후에 운영체제에 이를 전달한다. (시간/메모리 낭비) 


윈도우에서- 문자열 인자가 있는 함수의 경우 두버젼으로 제공하는 게 일반적. 


CreateWindowExW (Wide) / CreateWindowExA ( ANSI )


이를 이용하는 것이 아니라 유니코드 사용 여부에 따라 위 함수를 전처리기를 통해 분기하는 함수를 이용하는 것이 일반적.


#ifdef UNICODE

#define CreateWindowExW CreateWindowExW

..


CreateWindowExA 는 유니코드를 변환한후 CreateWindowExW 를 호출하는 형태로 구현되어 있다. 

-> 즉 더 많은 메모리와 시간 소요 


몇몇 윈도우 API 는 16비트 윈도우용으로 제작된 프로그램과의 호환성을 위해서만 유지되고 있어 ANSI 문자열만을 지원.

즉, 이런 함수는 개발시에 사용하지 않아야한다.