__thiscall
Specifici di Microsoft
__thiscall la convenzione di chiamata viene utilizzata nelle funzioni membro e è la convenzione di chiamata predefinita utilizzata dalle funzioni membro di C++ che non utilizzano argomenti variabili.In __thiscall, il chiamato pulizia dello stack, che è impossibile per vararg funzioni.Gli argomenti lo stack stack da destra a sinistra, con this puntatore passato dal registro ECX e non nello stack, sull'architettura x86.
un motivo utilizzare __thiscall è nelle classi delle funzioni membro utilizzano __clrcall per impostazione predefinita.In tal caso, è possibile utilizzare __thiscall per rendere le funzioni del membro specifico che possono essere chiamate da codice nativo.
Durante la compilazione con /clr: pure, tutte le funzioni e puntatori a funzione sono __clrcall se non specificato diversamente.
Nelle versioni precedenti a Visual C++ 2005, la convenzione di chiamata del thiscall non può essere specificata in modo esplicito in un programma, poiché thiscall non è una parola chiave.
vararg le funzioni membro utilizzano __cdecl convenzione di chiamata.Tutti gli argomenti della funzione lo stack stack, con this puntatore posizionato sull'ultimo dello stack
Poiché questa convenzione di chiamata si applica solo a C++, non esiste alcuna combinazione della decorazione dei nomi c#.
La famiglia di (IPF) processori Itanium e x64 computer, __thiscall viene accettato e ignorato dal compilatore, in un fiche IPF, per convenzione, i parametri vengono passati nel registro.
Per le funzioni di classe non statica, se la funzione è non inline definita, il modificatore della convenzione di chiamata non è necessario specificarlo nella definizione non inline.Ovvero per i metodi del membro non statico della classe, la convenzione di chiamata specificata durante la dichiarazione è nota al momento della definizione.
Esempio
// thiscall_cc.cpp
// compile with: /c /clr:oldSyntax
struct CMyClass {
void __thiscall mymethod();
void __clrcall mymethod2();
};