__thiscall
Die microsoftspezifische__thiscall
Aufrufkonvention wird für C++-Klassenmememmfunktionen in der x86-Architektur verwendet. Es ist die standardanrufliche Konvention, die von Memberfunktionen verwendet wird, die keine variablen Argumente (vararg
Funktionen) verwenden.
Unter __thiscall
, der angerufene sauber den Stapel, der für vararg
Funktionen unmöglich ist. Argumente werden vom Stapel von rechts nach links verschoben. Der this
Zeiger wird über das Register ECX und nicht über den Stapel übergeben.
Auf ARM-, ARM64- und x64-Computern __thiscall
wird vom Compiler akzeptiert und ignoriert. Das liegt daran, dass sie standardmäßig eine registerbasierte Anrufkonvention verwenden.
Ein Grund für die Verwendung __thiscall
ist in Klassen, deren Memberfunktionen standardmäßig verwendet werden __clrcall
. In diesem Fall können Sie dazu verwenden __thiscall
, einzelne Memberfunktionen aus systemeigenem Code aufzurufen.
Bei der Kompilierung mit /clr:pure
allen Funktionen und Funktionszeigern wird __clrcall
nichts anderes angegeben. Die /clr:pure
Optionen und /clr:safe
Compileroptionen sind in Visual Studio 2015 veraltet und werden in Visual Studio 2017 nicht unterstützt.
vararg
Memberfunktionen verwenden die __cdecl
aufrufende Konvention. Alle Funktionsargumente werden auf den Stapel verschoben, wobei der this
Zeiger auf dem Stapel zuletzt platziert wird.
Da diese Aufrufkonvention nur für C++ gilt, verfügt sie nicht über ein C-Namens-Dekorationsschema.
Wenn Sie eine nicht statische Klassenmemmembefunktion außerhalb der Zeile definieren, geben Sie den Aufrufkonventionsmodifizierer nur in der Deklaration an. Sie müssen sie nicht erneut in der out-of-line-Definition angeben. Der Compiler verwendet die während der Deklaration angegebene Aufrufkonvention an der Definitionsstelle.
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für