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);
·············
·············}
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