_cdecl与_stdcall的区别

简单记下。以后再补充:

_cdecl

  1. 参数由右到左顺序入栈。
  2. 清理栈(stack)的工作由Caller来完成。(即调用者)
  3. 可变参数的函数的完成,必须使用_cdecl。
  4. 由于caller要包含清理栈(stack)的代码,所以产生的可执行文件*.exe会比较大。

_stdcall

  1. 约定用于调用Win32 API函数。
  2. 参数由右到左入栈。
  3. 清理栈的工作由Callee来完成。(即被调用者)
  4. 参数个数固定。
  5. 由于函数本身知道传进来的参数的个数,因此可以返回前调用一条ret n指令直接清理传递参数的堆栈(stack)。

posted on 2011-08-17 15:16 lateCpp 阅读(147) 评论(0)  编辑 收藏 引用 所属分类: C/C++ 基础&算法


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿

随笔分类

文章分类

文章档案

搜索

最新评论