__thiscall
Только для систем Microsoft
__thiscall соглашение о вызовах используется для функций-членов и соглашение о вызовах по умолчанию, используемое функции-членами C++, которые не используют переменные аргументы.Под __thiscall, вызываемый очищает стек, для которого невозможн vararg функции.Аргументы передаются в стек справа налево и this указатель, переданной в регистре ECX, а не в стек, для архитектуры x86.
Одной из причин использования __thiscall в классах функции-члены, которые используют __clrcall по умолчанию.В этом случае можно воспользоваться __thiscall чтобы сделать функции отдельных членов могут вызываться из машинного кода.
При компилировании с /clr: чистыевсе функции и указатели функций __clrcall если не указано иное.
Перед в выпусках Visual C++ 2005 thiscall соглашение о вызове не может быть явно указано в программе, поскольку thiscall не является ключевым словом.
vararg функции-члены используют __cdecl соглашение о вызовах.Все аргументы функции помещаются в стек, с this указатель помещенный в последнем стека
Поскольку это соглашение о вызове применяется только к C++, схема оформление имен на c#.
Для семейства процессоров Itanium (IPF) и x64 компьютеры, __thiscall принимает и не обрабатывается компилятором. на обломоке IPF, по соглашению параметры передаются в регистр.
Для non-статических функций класса, если указанная функция вне линия, вызывающий модификатор соглашения не обязательно должен быть определен в определении вне линии.То есть для методов члена класса non-статических, соглашением о вызове, указанное во время объявления принято с точки зрения определения.
Пример
// thiscall_cc.cpp
// compile with: /c /clr:oldSyntax
struct CMyClass {
void __thiscall mymethod();
void __clrcall mymethod2();
};