__thiscall
Microsoft 固有の仕様 →
__thiscall の呼び出し規約はメンバー関数で使用され可変個の引数を使用しない C++ メンバー関数で使用される既定の呼び出し規約です。__thiscall の下に呼び出し先は vararg の関数には事前にあるスタックを消去します。引数はスタック上でレジスタ ECX にをx86 アーキテクチャでスタックに渡られてthis のポインターを右から左へプッシュされます。
__thiscall を使用する 1 とおりのはメンバー関数を __clrcall が既定で使用されるクラスです。この場合ネイティブ コードの個々のメンバー関数を呼び出すことができるようにするために __thiscall を使用できます。
/clr: 純粋 でコンパイルする場合はすべての関数および関数ポインターはで特に指定しない限り __clrcall です。
Visual C++ 2005 より前のリリースではthiscall の呼び出し規約はプログラムで thiscall がキーワードではないためを明示的に指定できません。
vararg のメンバー関数は __cdecl の呼び出し規約を使用します。関数のすべての引数はスタック上の最後に置かれて this のポインターがスタックにプッシュされます。
この呼び出し規約が C++ にのみ適用されるためC の名前の装飾の設定はありません。
IPF (Itanium Processor Family) と (IPF) x64 コンピューターの場合 __thiscall はコンパイラによって受け付けられ無視 ; はチップで規則ではパラメーターはレジスタに渡されます。
静的でないクラスの関数の場合関数が定義されているとに EOF ラインである場合は呼び出し規約の修飾子はアウトに EOF ライン定義で指定する必要はありません。つまりクラスの非静的なメンバーのメソッドごとに宣言時に指定された呼び出し規約は定義時に使用されます。
使用例
// thiscall_cc.cpp
// compile with: /c /clr:oldSyntax
struct CMyClass {
void __thiscall mymethod();
void __clrcall mymethod2();
};