首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 中PASCAL是什么意思,该如何处理

2012-07-29 
C++ 中PASCAL是什么意思如下:CObject* (PASCAL* m_pfnCreateObject)() // NULL abstract class如果把P

C++ 中PASCAL是什么意思
如下:
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class

如果把PASCAL去掉,就成为
CObject* (* m_pfnCreateObject)(); // NULL => abstract class
函数指针,指针指向一个参数为空返回值类型为CObject*的函数。

但是加上PASCAL后是什么意思,查了一下,说PASCAL是函数调用约定,说是参数从右往左压栈方式,函数退出时清空堆栈。

“参数从右往左压栈方式,函数退出时清空堆栈。”是什么意思,要是不用PASCAL可不可以,如果不可以,那么不用的话会有什么后果?


[解决办法]
貌似Pascal是从左到右依次入栈吧...
这个说法其实是说的编译器执行的动作, 写汇编代码的时候可以看出来函数的参数是如何PUSH到堆栈里面去的, C++程序员只需要知道这回事就好了.
[解决办法]
关键是你调用的时候得一致

你自己写的函数考虑符号/性能自行决定约定
[解决办法]
调用点的声明和函数的定义需要一致, 否则调用传参与函数定义期待的传参方式不同将出问题.

热点排行