__fastcall

Microsoft-spezifisch

Die __fastcall Aufrufkonvention gibt an, dass Argumente für Funktionen in Registern übergeben werden sollen, falls möglich.Die folgende Liste zeigt die Verwendung dieser Aufrufkonvention an.

Element

Implementierung

Reihenfolge Argument-übergeben

Das erste DWORD oder zwei Argumente werden in kleinere ECX- und EDX-Register übergeben. alle anderen Argumente werden von rechts nach links übergeben.

Stapel-Wartung Verantwortung

Aufgerufene Funktion nimmt die Argumente vom Stapel.

Namensergänzungskonvention

@-Zeichen wird den Namen vorangestellt. ein @-Zeichen, das von der Anzahl von Byte folgt (dezimal) in der Parameterliste wird an den Namen angefügt.

CASE-Übersetzung Konvention

Keine Fallübersetzung ausgeführt.

HinweisHinweis

In zukünftigen Versionen möglicherweise andere Register - Compiler verwenden, um Parameter zu speichern.

Verwenden /Gr-Compileroption wird die einzelnen Funktionen im Modul als fastcall zu kompilieren, es sei denn, die das Arbeiten mit einem in Konflikt stehenden Attribut deklariert ist, oder der Name der Funktion ist main.

Auf Itanium-Prozessorfamilie (IPF) und AMD64 Computern __fastcall wird vom Compiler akzeptiert und ignoriert. vereinbarungsgemäß auf einem IPF-Chip Parameter in Registern übergeben werden.

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

this

void CMyClass::mymethod() { return; }

ist äquivalent zu diesem

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

Beispiel

Im folgenden Beispiel ist die Funktion mit dem Namen DeleteAggrWrapper in Registern übergebene Argumente:

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

Siehe auch

Referenz

Argument-Übergeben und Namenskonventionen

C++-Schlüsselwörter