__thiscall
Konwencja wywoływania specyficzna dla__thiscall
firmy Microsoft jest używana w funkcjach składowych klas języka C++ w architekturze x86. Jest to domyślna konwencja wywoływania używana przez funkcje członkowskie, które nie używają argumentów zmiennych (vararg
funkcji).
W obszarze __thiscall
obiekt wywoływany czyści stos, który jest niemożliwy dla vararg
funkcji. Argumenty są wypychane na stos od prawej do lewej. Wskaźnik this
jest przekazywany za pośrednictwem rejestru ECX, a nie na stosie.
Na maszynach __thiscall
ARM, ARM64 i x64 są akceptowane i ignorowane przez kompilator. Dzieje się tak, ponieważ domyślnie używają konwencji wywoływania opartej na rejestrze.
Jedną z przyczyn użycia __thiscall
są klasy, których funkcje składowe używają __clrcall
domyślnie. W takim przypadku można użyć __thiscall
polecenia , aby poszczególne funkcje członkowskie mogły być wywoływane z kodu natywnego.
Podczas kompilowania za pomocą /clr:pure
polecenia wszystkie funkcje i wskaźniki funkcji są __clrcall
określone w inny sposób, chyba że określono inaczej. Opcje kompilatora /clr:pure
i /clr:safe
są przestarzałe w programie Visual Studio 2015 i nieobsługiwane w programie Visual Studio 2017.
vararg
funkcje członkowskie używają __cdecl
konwencji wywoływania. Wszystkie argumenty funkcji są wypychane na stos, a this
wskaźnik umieszczony na stosie jest ostatni.
Ponieważ ta konwencja wywoływania ma zastosowanie tylko do języka C++, nie ma schematu dekoracji nazw języka C.
Podczas definiowania funkcji składowej klasy niestacjonanej poza wierszem określ modyfikator konwencji wywołującej tylko w deklaracji. Nie musisz ponownie określać go w definicji poza wierszem. Kompilator używa konwencji wywoływania określonej podczas deklaracji w punkcie definicji.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla