Udostępnij za pośrednictwem


__fastcall

Programu Microsoft

__Fastcall konwencji wywoływania Określa, że argumenty funkcji są przekazywane w rejestrach, gdy jest to możliwe.Na poniższej liście przedstawiono wdrażania niniejszej konwencji wywoływania.

Element

Wdrożenie

Kolejność przekazywania argumentu

Dwa pierwsze DWORD lub mniejszych argumenty są przekazywane w ECX i EDX rejestrów; inne argumenty są przekazywane po prawej do lewej.

Odpowiedzialność za utrzymanie stosu

Wywoływana funkcja POP argumenty ze stosu.

Przekręcenie nazwy Konwencji

Znak (@) jest prefiksem nazwy; znak następuje liczba bajtów (w zapisie dziesiętnym) w parametrze lista jest umieszczona po nazwach.

Tłumaczenie przypadku Konwencji

Nie sprawy tłumaczenie wykonywane.

[!UWAGA]

Kompilator w przyszłych wersjach mogą używać różnych rejestrów do przechowywania parametrów.

Za pomocą się przełączników /Gr opcji kompilatora powoduje, że każdej funkcji w module skompilować jako fastcall, chyba że funkcja jest zadeklarowana z atrybutem powodujące konflikt lub nazwę funkcji, jest main.

Na komputerach z rodziny procesor Itanium (IPF) i AMD64 __fastcall jest akceptowane i ignorowane przez kompilator; w układzie IPF przez Konwencję, parametry są przekazywane w rejestrze.

Funkcje klasy-statycznej Jeśli funkcja jest zdefiniowane poza wiersza, modyfikator konwencji wywoływania nie muszą zostać określone w definicji wiersza.Oznacza to, że dla metod niestatycznego członka klasy, konwencja wywołania określonej podczas deklaracji zakłada się w punkcie uderzenia definicji.Biorąc pod uwagę niniejszej definicji klasy

struct CMyClass {
   void __fastcall mymethod();
};

to

void CMyClass::mymethod() { return; }

jest to równoważne

void __fastcall CMyClass::mymethod() { return; }

Przykład

W poniższym przykładzie funkcja o nazwie DeleteAggrWrapper jest przekazywana argumentów w rejestrach:

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

Zobacz też

Informacje

Argument, przekazując i konwencji nazewnictwa

Słów kluczowych języka C++