首先,讓我們來分個類,調用方法分爲兩大類另加一個較特殊的__thiscall.
第一類:__stdcall類 別名:WINAPI,CALLBACK,PASCAL。該類特點是:主調函數負責參數入棧,由函數本身負責棧的恢復。【編程軟件】
第二類:__cdecl類 別名:C/C++中默認調用方式,若你定義函數未指定函數調用約定(Calling Conventions),例如在VC6中下面兩個函數的調用約定是等價的:
int max(int a, int b)
{
return a>b?a:b;
}
int __cdecl min(int a, int b)
{
return a<b?a:b;
}
該類調用約定的特點是:由主調函數負責參數入棧,並由主調函數負責線的恢復。
第三類:__thiscall 該類比較特殊,只用於類成員函數調用,你甚至不能強制指定這個函數調用約定。它是由C/C++編譯器自動添加的。在C/C++中類成員函數會默認傳入一個this指針,對於此,在默入情況下,C/C++中類成員函數通過此類調用約定來指定this指針。
接着介紹一下__thiscall,__thiscall是關於類的一種調用方式。
它與其他調用方式的最大區別是:
__thiscall對每個函數都增加了一個類指針參數
class aa
{
void bb(int cc);
};
實際上bb的函數原形是void bb(aa &this, int cc);
__cdecl的調用方式介紹: C和C++缺省調用方式
轉載請註明,本文出自:http://korey.blog.51cto.com/