共用方式為


__thiscall

Microsoft 專有的

__thiscall呼叫慣例適用於成員函式而不使用可變個數引數的 C++ 成員函式所使用的預設呼叫慣例。在__thiscall,被呼叫端會清除堆疊,也就是不可能vararg函式。引數會推入堆疊由右至左,與this傳入透過暫存器 ECX 中,而不是在堆疊上,在 x86 架構上的指標。

若要使用的原因之一__thiscall中的類別的成員函式使用__clrcall預設狀況下。在此情況下,您可以使用__thiscall ,將個別的成員函式可從原生程式碼呼叫。

以編譯時 /clr: pure,所有函式和函式指標都是__clrcall除非另有指定。

在 Visual C++ 2005年之前的版本中,呼叫慣例 thiscall 無法明確地指定在程式中,因為thiscall不是關鍵字。

vararg成員函式使用__cdecl呼叫慣例。所有的函式引數時,會推入堆疊上,,使用this指標放在堆疊上一次

由於這個呼叫慣例僅適用於 C++,還有沒有 c 名稱裝飾配置。

Itanium 處理器系列 (IPF) 和x64 , __thiscall加以接受並由編譯器 ; 略過 IPF 序號依照慣例,所傳遞的參數在暫存器中。

對於非靜態類別的函式,函式是定義的出行,如果呼叫慣例修飾詞並沒有指定行超出定義上。也就是類別的非靜態成員方法,在宣告期間指定的呼叫慣例會假設為定義點。

範例

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

請參閱

參考

引數傳遞,和命名慣例