__stdcall
Microsoft 전용
__stdcall Win32 API 함수를 호출 하려면 호출 규칙이 사용 됩니다.컴파일러가 없으므로 호출 수신자는 스택 정리 vararg 함수 __cdecl.이 호출 규칙을 사용 하는 함수는 함수 프로토타입이 필요 합니다.
return-type __stdcall function-name[(argument-list)]
설명
다음은이 호출 규칙의 구현을 보여 줍니다.
요소 |
구현 |
---|---|
인수 전달 순서 |
오른쪽에서 왼쪽 순서입니다. |
인수 전달 규칙 |
값, 포인터 또는 참조 형식 전달 되지 않으면. |
스택 유지 관리 담당 |
Pop 함수 스택에서 자체의 인수를 호출합니다. |
규칙 이름 데코레이션 |
밑줄 (_)에 이름이 붙습니다.이름 뒤에 인수 목록의 바이트 (10 진수)의 수 만큼 뒤에 기호 (@).따라서, 함수 선언 int func( int a, double b ) 는 다음과 같이 데코레이팅된:_func@12 |
대/소문자 변환 규칙 |
없음 |
해당 /gz 사용 컴파일러 옵션을 지정 합니다. __stdcall 다른 호출 규칙을 명시적으로 선언 하는 모든 함수에 대 한.
사용 하 여 선언 된 함수는 __stdcall 한정자를 반환 값을 동일한 방식으로 함수를 사용 하 여 선언 된 __cdecl.
Itanium 프로세서 제품군 (IPF) 및 x64 프로세서 __stdcall 수락 및 컴파일러에서; 무시 IPF에 규칙에 따라 매개 변수 레지스터에 전달 됩니다.
정의 된 출력 줄을 함수는 경우 비정적 클래스 함수에 대 한 호출 규칙 한정자 줄의 정의를 지정할 수 없습니다.즉, 클래스에서 비정적 멤버 메서드를 선언 도중 지정 된 호출 규칙 정의에 사용 됩니다.이렇게 클래스 정의
struct CMyClass {
void __stdcall mymethod();
};
this
void CMyClass::mymethod() { return; }
이렇게 하는 것과 같습니다.
void __stdcall CMyClass::mymethod() { return; }
예제
다음 예제에서 _ _를 사용stdcall 결과 모두 WINAPI 함수의 형식 표준 호출으로 처리 되 고:
// Example of the __stdcall keyword
#define WINAPI __stdcall
// Example of the __stdcall keyword on function pointer
typedef BOOL (__stdcall *funcname_ptr)(void * arg1, const char * arg2, DWORD flags, ...);