Freigeben über


__stdcall

Microsoft-spezifisch

Die __stdcall Aufrufkonvention wird zum Aufrufen von Win32-API-Funktionen.Der Aufgerufene entleert den Stapel. Daher kann der Compiler vararg-Funktionen __cdecl.Funktionen, die diese Aufrufkonvention verwenden, erfordern einen Funktionsprototyp.

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

Hinweise

Die folgende Liste zeigt die Verwendung dieser Aufrufkonvention an.

Element

Implementierung

Reihenfolge Argument-übergeben

Von rechts nach links.

Konvention Argument-übergeben

Der Wert es sei denn, ein Zeiger oder ein Referenztyp übergeben wird.

Stapel-Wartung Verantwortung

Aufgerufene Funktion auf ihre eigenen Argumente vom Stapel.

Namensergänzungskonvention

Ein Unterstrich (_) wird dem Namen vorangestellt.Der Name wird vom @-Zeichen, gefolgt von der Anzahl von Byte (dezimal) in der Argumentliste.Daher wird die Funktion, die als int func( int a, double b ) deklariert ist, wird wie folgt: _func@12

CASE-Übersetzung Konvention

None

Die /Gz-Compileroption gibt __stdcall für alle Funktionen nicht explizit deklariert mit einer anderen Aufrufkonvention an.

deklarierten Funktionen mithilfe der __stdcall Rückgabewerte Modifizierer auf die gleiche Weise wie die Funktionen, die mit __cdecldeklariert wurden.

Auf Itanium-Prozessorfamilie (IPF) und x64-Prozessoren __stdcall wird vom Compiler akzeptiert und ignoriert. Parameter werden für IPF vereinbarungsgemäß in Registern übergeben.

Eine nicht statische Klassenfunktionen wenn die Funktion definierten Out-of-Line ist, muss der Aufrufkonvention modifizierer jedoch nicht in der Definition Flucht angegeben werden.Das bedeutet, dass für nicht statische Member Methoden der Klasse, wird der Aufrufkonvention, die während der Deklaration angegeben wird, zum Zeitpunkt der Definition angenommen.Wenn diese Klassendefinition

struct CMyClass {
   void __stdcall mymethod();
};

this

void CMyClass::mymethod() { return; }

ist äquivalent zu diesem

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

Beispiel

Im folgenden Beispielstdcall Verwendung von Ergebnissen in allen WINAPI-Typen von Funktionen als Standardwert Aufruf behandelt werden:

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

Siehe auch

Referenz

Argument-Übergeben und Namenskonventionen

C++-Schlüsselwörter