Freigeben über


__cdecl

Microsoft-spezifisch

Dies ist die Standardaufrufkonvention für C- und C++-Programme.Da der Stapel vom Aufrufer bereinigt wird, kann er vararg-Funktionen ausführen.Die Aufrufkonvention __cdecl erstellt ausführbare Dateien länger als __stdcall, da sie jeden Funktionsaufruf benötigt, um Stapel bereinigungscode eingeschlossen werden sollen.Die folgende Liste zeigt die Verwendung dieser Aufrufkonvention an.

Element

Implementierung

Reihenfolge Argument-übergeben

Von rechts nach links

Stapel-Wartung Verantwortung

Aufrufende Funktion nimmt die Argumente vom Stapel geholt

Namensergänzungskonvention

Unterstrich (_) wird auf den Namen, außer bei Verwendung von __cdecl exportiert, funktioniert diese C-Bindung vorangestellt.

CASE-Übersetzung Konvention

Keine Fall ausgeführt übersetzung

HinweisHinweis

Weitere Informationen finden Sie unter Ergänzte Namen.

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

Platzieren Sie dencdecl-Modifizierer vor einer Variablen oder einem Funktionsnamen.Da C-Benennen und Aufrufkonventionen der Standardeinstellung sind nur dann verwenden müssen, istcdecl , wenn Sie die Compileroption /Gz (stdcall) oder /Gr (fastcall) angegeben haben.Die /Gd-Compileroption erzwingt die __cdecl Aufrufkonvention.

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 __cdecl mymethod();
};

this

void CMyClass::mymethod() { return; }

ist äquivalent zu diesem

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

Beispiel

Im folgenden Beispiel wird der Compiler angewiesen, C-Benennen und Aufrufkonventionen für die system-Funktion zu verwenden:

// Example of the __cdecl keyword on function
int __cdecl system(const char *);
// Example of the __cdecl keyword on function pointer
typedef BOOL (__cdecl *funcname_ptr)(void * arg1, const char * arg2, DWORD flags, ...);

Siehe auch

Referenz

Argument-Übergeben und Namenskonventionen

C++-Schlüsselwörter