Sdílet prostřednictvím


__thiscall

Konkrétní společnosti Microsoft

__thiscall Konvence volání se používá u funkce členů a je výchozí konvenci volání používá C++ členské funkce, které nepoužívají proměnnými argumenty.Pod __thiscall, volaný čistí zásobníku, není možné, vararg funkcí.Argumenty jsou posunuta v zásobníku zprava doleva, se this ukazatele, které jsou předávány prostřednictvím rejstříku ECX a ne na zásobník na architektuře x 86.

Jedním z důvodů použít __thiscall je člen, jehož funkce použití tříd __clrcall ve výchozím nastavení.V takovém případě můžete použít __thiscall tak, aby jednotlivé členské funkce volána z nativního kódu.

Při kompilaci s /clr: čistý, jsou všechny funkce a funkce ukazatele __clrcall Pokud není uvedeno jinak.

Ve verzích před Visual C++ 2005 thiscall konvence volání nelze určit explicitně v programu, protože thiscall nebyla klíčové slovo.

varargčlenské funkce použití __cdecl konvence volání.Všechny argumenty funkce jsou v zásobníku, posune se this umístěn ukazatel na zásobník poslední

Protože tato konvence volání se vztahuje pouze na C++, není žádné schéma c název dekorace.

Na procesor řady Itanium (IPF) a x64 stroje, __thiscall přijat a ignorován kompilátorem; čipu IPF úmluvou, parametry jsou předány do rejstříku.

Funkce nestatický třídy Pokud je funkce definovaná mimo řádku, volající modifikátor úmluvy nemá stanovené na definici konce řádku.K nestatickému členu metody třídy, je konvence volání zadané během prohlášení se předpokládá na místě z definice.

Příklad

// thiscall_cc.cpp
// compile with: /c /clr:oldSyntax
struct CMyClass {
   void __thiscall mymethod();
   void __clrcall mymethod2();
};

Viz také

Referenční dokumentace

Argument předávání a konvence pojmenování