请问cdecl和stdcall有什么区别 ( 积分: 20 )

  • 主题发起人 主题发起人 loskiller
  • 开始时间 开始时间
L

loskiller

Unregistered / Unconfirmed
GUEST, unregistred user!
这两个关键字应该在什么情况下用
 
这两个关键字应该在什么情况下用
 
是在进行过程调用(或者函数调用)的时候,参数压栈的方式不一样.两个正好是相反的.<br>cdecl好像是从右网左的压栈,stdcall是相反的.(你就记住是相反的就行了.也许我<br>记错了,具体顺序你可以查阅相关资料.).
 
查帮助就行了。基本上是函数调用的参数约定,<br>The register and pascal conventions pass parameters from left to right; that is, the left most parameter is evaluated and passed first and the rightmost parameter is evaluated and passed last. The cdecl, stdcall, and safecall conventions pass parameters from right to left.<br> For all conventions except cdecl, the procedure or function removes parameters from the stack upon returning. With the cdecl convention, the caller removes parameters from the stack when the call returns.<br><br>The register convention uses up to three CPU registers to pass parameters, while the other conventions pass all parameters on the stack.<br> The safecall convention implements exception &quot;firewalls.&quot; On Windows, this implements interprocess COM error notification.
 
哪种方式更好
 
一般在windows下用stdcall,在别的操作系统下用cdecl 对不对
 
也不知道那种好,只是常用StdCall.但是默认发现Vc和Delphi的输出函数的方式是Cdecl
 
多人接受答案了。
 
后退
顶部