__fastcall
Microsoft 전용
해당 __fastcall 호출 규칙을 지정 함수 인수는 가능 하면 레지스터에 전달 됩니다.다음은이 호출 규칙의 구현을 보여 줍니다.
요소 |
구현 |
---|---|
인수 전달 순서 |
처음 두 개의 DWORD 또는 작은 인수 레지스터 EXC 및 EDX에 전달 됩니다. 다른 인수는 모두 왼쪽으로 바로 전달 됩니다. |
스택 유지 관리 담당 |
Pop 함수 스택에서 인수를 호출합니다. |
규칙 이름 데코레이션 |
이름에 at 기호 (@) 접두사가 있습니다. 바이트 (10 진수) 매개 변수의 개수와 기호 목록 이름을 접미사로 합니다. |
대/소문자 변환 규칙 |
대/소문자 변환은 수행지 않습니다. |
[!참고]
향후 컴파일러 버전 다른 레지스터 매개 변수를 저장 하려면 사용할 수 있습니다.
사용 하는 /Gr 컴파일러 옵션을 함수 사용 하 여 충돌 하는 특성으로 선언 된 또는 함수의 이름으로 fastcall 컴파일할 모듈에서 각 함수 사용 됩니다 main.
Itanium 프로세서 제품군 (IPF) 및 AMD64 컴퓨터, __fastcall 수락 및 컴파일러에서; 무시 있는 IPF 칩에 규칙에 따라 매개 변수 레지스터에 전달 됩니다.
정의 된 출력 줄을 함수는 경우 비정적 클래스 함수에 대 한 호출 규칙 한정자 줄의 정의를 지정할 수 없습니다.즉, 클래스에서 비정적 멤버 메서드를 선언 도중 지정 된 호출 규칙 정의에 사용 됩니다.이렇게 클래스 정의
struct CMyClass {
void __fastcall mymethod();
};
this
void CMyClass::mymethod() { return; }
이렇게 하는 것과 같습니다.
void __fastcall CMyClass::mymethod() { return; }
예제
다음 예제에서는 함수 라는 DeleteAggrWrapper 인수는 레지스터에 전달 됩니다.
// Example of the __fastcall keyword
#define FASTCALL __fastcall
void FASTCALL DeleteAggrWrapper(void* pWrapper);
// Example of the __ fastcall keyword on function pointer
typedef BOOL (__fastcall *funcname_ptr)(void * arg1, const char * arg2, DWORD flags, ...);