Udostępnij za pośrednictwem


__stdcall

Programu Microsoft

__stdcall Konwencji wywoływania jest wykorzystywana do wywołania funkcji Win32 API.Wywoływany czyści stosu, co sprawia, że kompilator vararg funkcje __cdecl.Funkcje korzystające z niniejszej konwencji wywoływania wymagają prototyp funkcji.

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

Uwagi

Na poniższej liście przedstawiono wdrażania niniejszej konwencji wywoływania.

Element

Wdrożenie

Kolejność przekazywania argumentu

Od prawej do lewej.

Przekazywanie argumentów Konwencji

Według wartości chyba że jest przekazywana typu wskaźnik lub odniesienia.

Odpowiedzialność za utrzymanie stosu

O nazwie funkcji POP własnej argumenty ze stosu.

Przekręcenie nazwy Konwencji

Podkreślenie (_) jest prefiks do nazwy.Nazwa następuje znak (@), następuje liczba bajtów (w zapisie dziesiętnym) na liście argumentów.W związku z tym, funkcja zadeklarowana jako int func( int a, double b ) jest następująca:_func@12

Tłumaczenie przypadku Konwencji

Brak

/Gz Określa opcję kompilatora __stdcall dla wszystkich funkcji, które nie są jawnie zadeklarowane z inną konwencję wywołania.

Funkcje zadeklarowane za pomocą __stdcall modyfikator zwracanej wartości w taki sam sposób jak zadeklarowane za pomocą funkcji __cdecl.

W systemach z rodziny procesor Itanium (IPF) i procesorów x 64 __stdcall jest akceptowane i ignorowane przez kompilator; na 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 __stdcall mymethod();
};

to

void CMyClass::mymethod() { return; }

jest to równoważne

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

Przykład

W poniższym przykładzie wykorzystania __stdcall wyników we wszystkich WINAPI typy funkcji, są traktowane jako standardowe wywołanie:

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

Zobacz też

Informacje

Argument, przekazując i konwencji nazewnictwa

Słów kluczowych języka C++