关于呼叫惯例!(50分)

  • 主题发起人 主题发起人 whaoye
  • 开始时间 开始时间
W

whaoye

Unregistered / Unconfirmed
GUEST, unregistred user!
在一本书上看到一段话:

呼叫惯例
编译器指令按次序清除呼叫惯例
*register 由左至右函数使用寄存器
*pascal 由左至右函数使用堆栈
*cdecl 由右至左呼叫者使用堆栈
*stdcall 由右至左函数使用堆栈

我不明白这是什么意思,
只是在写一些回调函数时,
好象非要用stdcall,
到底这几个标志各有什么作用?
请高手赐教。
 
这是调用方式问题,可能是和C++调用一致吧
 
那在使用的时候有什么区别没有呢?
 
这是Windows程序中调用函数参数的压栈方式。

比如:如果是过程procedure whaoye( nInt : Integer
nBool : boolean )
采用pascal方式的话,那么参数压栈的顺序就是:nInt、nBool
如果是stdcall的话,就是nBool、nInt。

pascal是最早通用的压栈方式,一般SDK程序都会用它;

stdcall是Windows里(主要是M$)标准的,所以dll等调用会使用到它;
 
主要是pascal与c语言函数调用时采用的参数压栈、弹栈方式不一样。windows用c写的,
delphi要在其上开发程序,自然要照顾它,定义了stdcall方式
 
多谢各位高手的赐教。

to茶叶蛋:一早就帮我解决两个问题,真是感谢。
:)
 

Similar threads

S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部