Sdílet prostřednictvím


__stdcall

Konkrétní společnosti Microsoft

__stdcall Konvence volání se používá při volání funkcí rozhraní API systému Win32.Volaný čistí zásobníku, takže provede kompilátor vararg funkce __cdecl.Funkce, které používají tuto konvenci volání vyžadují funkce prototypu.

return-type __stdcall function-name[(argument-list)]

Poznámky

Následující seznam zobrazuje provádění této konvence volání.

Element

Implementace

Předávání argument pořadí

Zprava doleva.

Argument předávání úmluvy

Podle hodnoty Pokud je předán odkaz nebo ukazatele typu.

Údržba zásobníku odpovědnost

Vlastní argumenty nazývá POP funkce ze zásobníku.

Úprava názvu úmluvy

Název má předponu podtržítko (_).Následuje název znak zavináče (@ následuje počet bajtů (v desítkové soustavě) v seznamu argumentů).Proto funkce deklarované jako int func( int a, double b ) je upraven takto:_func@12

Případ překlad úmluvy

Žádná

/Gz určuje volba kompilátoru __stdcall pro všechny funkce, které nejsou explicitně deklarovány s jinou konvenci volání.

Funkce deklarované pomocí __stdcall modifikátor návratové hodnoty stejným způsobem jako funkce deklarované pomocí __cdecl.

Na procesor řady Itanium (IPF) a x 64 procesorů __stdcall přijat a ignorován kompilátorem; na 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 __stdcall mymethod();
};

to

void CMyClass::mymethod() { return; }

odpovídá to

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

Příklad

V následujícím příkladu slouží __stdcall výsledky ve všech WINAPI funkce typy jsou zpracovány jako standardní volání:

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

Viz také

Referenční dokumentace

Argument předávání a konvence pojmenování

Klíčových slov jazyka C++