读书人

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

发布时间: 2012-07-29 15:26:13 作者: rapoo

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

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

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

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


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

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

读书人网 >C++

热点推荐