2014-06-22 8 views
2

이것은 근무한 사람, 근무한 사람을 알고있는 사람 또는 이러한 매크로를 정의하는 Microsoft 팀과 어떤 종류의 제휴 관계가있는 사람이라면 누구에게나 호기심을 불러 일으키는 질문입니다.Microsoft는 왜 WINAPI, CALLBACK 및 APIENTRY를 모두 __stdcall을 참조하도록 정의 했습니까?

나는 무엇을 이해합니까 __stdcall 왜 사용 되었는가, 나는 왜 마이크로 소프트가 똑같은 세 가지 매크로를 만들지 이해하지 못합니다. 내가 볼 수있는 유일한 이점은 소스 파일에서 의미 론적 의미를 제공하는 것일뿐입니다.하지만 다른 점은 제가 말할 수있는 한 다른 이점을 제공하지 않는다는 것입니다. 분명히 그것을하는 것에 대한 포인트가있었습니다, 나는 그것이 무엇인지를 알고 싶습니다! :)

+0

나는 내 자신의 질문에 답하려고하지 않고 ... 다른 사람들로부터 통찰력을 얻고 싶었습니다. 하지만 노력해 줘서 고마워. – Aaron

+4

힌트 : 'WINAPI'와 'CALLBACK'은 16 비트 Windows에서 사용되었습니다. 두 가지 모두 파스칼 (PASCAL) 호출 규칙이며, 후자는 표준 상황에서 추가 기능을 설정하고 해체해야 함을 요구합니다. (http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/function-perilogues.html#Win16Callbacks). – IInspectable

답변

2

시맨틱 정보를 제공하는 데 사용되는 다른 매크로가 맞았습니다.

콜백, WINAPI 및 APIENTRY 모든 로 호출 규칙을 __stdcall을 함수를 정의하는 데 사용됩니다 MSDN이 약 CALLBACK 말한다. Windows API 의 대부분 함수는 WINAPI를 사용하여 선언됩니다. 콜백 함수로 함수를 식별하는 데 도움이되도록 구현 한 콜백 함수에 CALLBACK을 사용할 수 있습니다.

모두 WINAPIAPIENTRY는 것으로 알려져있다 : 시스템 기능에 대한

호출 규칙.

왜 시스템 기능을위한 두 개의 매크로가 있는지 알 수 없습니다.

+0

실제로 필자는 문서에서 매우 똑같은 내용을 읽었지만, 프로젝트를 컴파일하자 마자 의미 의미가 끝납니다. 전 처리기 단계 후에는 시맨틱 스가 더 이상 존재하지 않습니다. – Aaron