__stdcall

  • stdcall은 Microsoft에서 사용하는 호출 규약 중 하나로, 주로 Win32 API 함수 호출에 사용됩니다. 호출 규약은 함수가 호출될 때 스택을 정리하는 책임이 호출된 함수(callee)에 있다는 점에서 다른 호출 규약과 차별화됩니다.

주요 특징

  • 인수 전달 순서: 오른쪽에서 왼쪽으로 전달됩니다.

    • 우측에 인수부터 스택에 쌓임
  • 인수 전달 방식: 값으로 전달되며, 포인터나 참조 타입이 전달될 경우 해당 타입으로 전달됩니다.

  • 스택 유지 관리: 호출된 함수가 스택을 정리합니다.

  • 이름 장식 규칙: 함수 이름 앞에 밑줄(_)이 붙고, 이름 뒤에 @ 기호와 인수 목록의 바이트 수가 붙습니다. 예를 들어, int func(int a, double b) 함수는 _func@12로 장식됩니다.

  • 대소문자 변환 규칙: 없음.

주된 사용 사례

  1. Win32 API 함수 호출: 많은 Win32 API 함수가 stdcall을 사용합니다.

  2. COM 인터페이스: Component Object Model(COM)에서는 stdcall을 사용하여 인터페이스 메서드를 호출합니다.

  3. DLL 함수: 동적 링크 라이브러리(DLL)에서 정의된 함수를 호출할 때 stdcall을 사용합니다.

'프레임워크 > VisualStudio' 카테고리의 다른 글

디버깅 팁  (1) 2025.03.27
MSVC_CL 명령  (0) 2025.03.27
XML 문서화  (0) 2025.03.27
SAL 주석(Static Analysis Language)  (0) 2025.03.27
단축키  (0) 2025.03.27

+ Recent posts

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });