2011-09-14 5 views
9

문자 대신 끝에 A 문자가 추가 된 Win32 API 함수를 호출 할 때의 차이점은 무엇입니까?Win32 API에서`A`와`W` 함수의 차이점은 무엇입니까?

나는 ASCIIWIDE CHARACTER 또는 유니 코드라는 것을 알고 있지만 출력이나 입력의 차이점은 무엇입니까?

예를 들어 GetDefaultCommConfigA를 호출하면 COMMCONFIG 구조체에 WCHAR 문자열 대신 ASCII 문자열이 채워 집니까? (또는 GetDefaultCommConfigW에 대한 반대의 경우도 마찬가지) 즉

, 어떻게 문자열을 인코딩하기에 ASCII 또는 유니 코드 무엇인지 알고, 그것을 내가 A 또는 W 전화 기능의 버전이어야합니다? 옳은?

나는 이것을 question이라고했지만, 내 질문에는 답하지 않는다고 생각합니다.

답변

18

A 함수는 입력 및 출력으로 Ansi (ASCII가 아님) 문자열을 사용하고 W 함수는 유니 코드 문자열 (NT4 및 이전 버전에서는 UCS-2, W2K에서는 UTF-16 이상)을 사용합니다. 자세한 내용은 Refer to MSDN을 참조하십시오.

+4

+1 - 또한 매개 변수로 전달되는 모든 구조가 A 및 W 버전으로 제공된다는 점도 명심해야합니다. 예를 들어 RegisterClassExA는 ANSI LPCSTR을 사용하는 WNDCLASSEXA를 사용하고 W 버전은 LPCWSTR을 사용하지만 WCHAR은 A 버전으로 전달하지 못하며 반대의 경우도 마찬가지입니다. 시도 할 경우 유형에 대한 컴파일러 오류가 발생하지 않습니다. matching - 꽤 일반적인 초보자 오류는 캐스트를 사용하지 않고 올바른 유형을 사용하도록 코드를 변경하는 대신 오류를 "사라지게"만드는 것입니다. – BrendanMcK

관련 문제