다음을 통해 공유


__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, ...);

참고 항목

참조

인수를 전달 하 고 명명 규칙

C + + 키워드