C++中的PASCAL 是什么作用?

来源:百度知道 编辑:UC知道 时间:2024/07/07 13:40:53
在CObject类的结构 中,如下:
class CObject

{

public:

//与动态创建相关的函数

virtual CRuntimeClass* GetRuntimeClass() const;

析构函数

virtual ~CObject(); // virtual destructors are necessary

//与构造函数相关的内存分配函数,可以用于DEBUG下输出诊断信息

void* PASCAL operator new(size_t nSize);

void* PASCAL operator new(size_t, void* p);
·············
·············}

PASCAL是一种函数调用的方式,确定参数压栈的顺序,还有由谁来恢复堆栈,具体的可以看下下面的链接。还有这里:http://hi.baidu.com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/4e48666da7c769ff4316948c.html

__cdecl __stdcall 解析2008年03月23日 星期日 17:001.如果函数func是__cdecl(默认调用方式),调用时情况如下

int main()
...{
//参数从右到左压栈
push 4
push 3
push 2
push 1
call func
add esp 0x10 //调用者恢复堆栈指针esp,4个参数的大小是0x10(4x4)
}

2.如果函数func是__stdcall,调用时情况如下
int main()
...{
//参数从右到左压栈
push 4
push 3
push 2
push 1
call func
//恢复堆栈指针由被调用者func负责,方法是"ret 0x10"
}

3.如果函数func是__pascal,调用情况如下
int main()
...{
//参数从左到右压栈
push 1