__thiscall
La convenzione di chiamata specifica di__thiscall
Microsoft viene usata nelle funzioni membro della classe C++ nell'architettura x86. Si tratta della convenzione di chiamata predefinita usata dalle funzioni membro che non usano argomenti di variabile (vararg
funzioni).
In __thiscall
, il chiamato pulisce lo stack, che è impossibile per vararg
le funzioni. Gli argomenti vengono inseriti nello stack da destra a sinistra. Il this
puntatore viene passato tramite ECX del registro e non nello stack.
Nei computer ARM, ARM64 e x64 viene __thiscall
accettato e ignorato dal compilatore. Questo perché usano una convenzione di chiamata basata su registrazione per impostazione predefinita.
Un motivo per usare __thiscall
è nelle classi le cui funzioni membro usano __clrcall
per impostazione predefinita. In tal caso, è possibile usare __thiscall
per rendere le singole funzioni membro chiamabili dal codice nativo.
Durante la compilazione con /clr:pure
, tutte le funzioni e i puntatori a funzione non sono __clrcall
specificati diversamente. Le opzioni del /clr:pure
compilatore e /clr:safe
sono deprecate in Visual Studio 2015 e non supportate in Visual Studio 2017.
vararg
le funzioni membro usano la convenzione di __cdecl
chiamata. Tutti gli argomenti della funzione vengono inseriti nello stack, con il this
puntatore posizionato sullo stack per ultimo.
Poiché questa convenzione di chiamata si applica solo a C++, non ha uno schema di decorazione dei nomi C.
Quando si definisce una funzione membro di classe non statica out-of-line, specificare il modificatore della convenzione di chiamata solo nella dichiarazione. Non è necessario specificarlo di nuovo nella definizione out-of-line. Il compilatore usa la convenzione di chiamata specificata durante la dichiarazione al punto di definizione.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per