__fastcall
Konkrétní společnosti Microsoft
__Fastcall konvence volání Určuje, že argumenty funkce musí být předány evidence, pokud je to možné.Následující seznam zobrazuje provádění této konvence volání.
Element |
Implementace |
---|---|
Předávání argument pořadí |
První dvě DWORD nebo menší argumenty jsou předány v ECX a EDX registry; všechny argumenty jsou předány zleva doprava. |
Údržba zásobníku odpovědnost |
Argumenty nazývá POP funkce ze zásobníku. |
Úprava názvu úmluvy |
Zavináč (@) předponu názvů; znak následovaný počet bajtů (v desítkové soustavě) v parametru je uveden seznam za názvy. |
Případ překlad úmluvy |
Provádí překlad není velká. |
[!POZNÁMKA]
Kompilátor budoucí verze mohou používat různých žurnálů pro uložení parametrů.
Použití Parametry kompilátoru /Gr kompilátor možnost způsobí, že každá funkce v modulu kompilovat jako fastcall, pokud je funkce deklarována s kolidující atribut nebo název funkce je main.
Na procesoru Itanium řady (IPF) a AMD64 stroje __fastcall přijat a ignorován kompilátorem; čipu IPF úmluvou, parametry jsou předány do rejstříku.
Funkce nestatický třídy Pokud je funkce definovaná mimo řádku, volající modifikátor úmluvy nemá stanovené na definici konce řádku.K nestatickému členu metody třídy, je konvence volání zadané během prohlášení se předpokládá na místě z definice.Tato definice třídy uveden
struct CMyClass {
void __fastcall mymethod();
};
to
void CMyClass::mymethod() { return; }
odpovídá to
void __fastcall CMyClass::mymethod() { return; }
Příklad
V následujícím příkladu je funkce pojmenovaná DeleteAggrWrapper je předán argumenty registry:
// 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, ...);