__thiscall
Microsoft-spezifisch
Die Aufrufkonvention wird __thiscall für Memberfunktionen verwendet und ist die Standardaufrufkonvention, die von C++-Memberfunktionen verwendet wird, die keine variable Argumente verwenden.Die __thiscallder Aufgerufene entleert den Stapel, der für vararg-Funktionen nicht möglich ist.Argumente werden an den Stapel von rechts nach links verschoben, wenn sich der Mauszeiger über this Register ECX überschritten wurde, und nicht auf den Stapel auf der x86-Architektur.
Ein Grund für __thiscall zu verwenden, besteht in Klassen, deren Memberfunktionen standardmäßig __clrcall verwenden.In diesem Fall können Sie mithilfe __thiscall individuellen Fähigkeiten des Mitglieds von systemeigenem Code aufgerufen werden.
Beim Kompilieren mit /clr: pure, sind alle Funktionen und Funktionszeiger __clrcall sofern nicht anders angegeben.
In Versionen vor Visual C++ 2005, konnte die thiscall Aufrufkonvention nicht in einem Programm explizit angegeben werden, da thiscall kein Schlüsselwort wurde.
vararg-Memberfunktionen verwenden die __cdecl Aufrufkonvention.Alle Funktionsargumente werden auf dem Stapel abgelegt, wenn der this Zeiger auf dem Stapel abgelegt ist letzte
Da diese Aufrufkonvention nur für C++ gültig ist, gibt es kein Schema C-Namensergänzungs.
Auf Itanium-Prozessorfamilie (IPF) und x64 Computern __thiscall 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.
Beispiel
// thiscall_cc.cpp
// compile with: /c /clr:oldSyntax
struct CMyClass {
void __thiscall mymethod();
void __clrcall mymethod2();
};