标题: 一发不可收拾的学习
最新评论:[添加评论]
1. 问题男 [未注册用户] 2004-09-09 22:42
还遗漏了两个知识点:

Whether the caller function or called function removes the arguments from the stack at the end of the call. 

The name-decorating convention that the compiler uses to identify individual functions. 

前者是关于由谁(调用者或被调函数)释放参数的栈空间,后者是编译器“眼中的”函数符号名该如何被修饰

__stdcall、__fastcall都是被调函数清栈,__cdecl是被调着清栈;命名请查阅msdn,不再赘述

由于带有...参数,函数无法确定参数个数,自然无法清栈,所以wsprintf的修饰符是__cdecl,除此之外所有的winapi都是__stdcall

题外话:这些c/c++的规范的“二进制不确定性”也是组件技术(com etc)的产生原因之一(参见《essential com》——don box)
2. FantasySoft 2004-09-09 23:09
刚想着把到底由被调函数还是主调函数来清除栈这个知识点加上呢。谢谢楼上的老大了。

至于name-decoration的问题,我也注意到了,但是总觉得这个在编程过程中意义不大,除非需要自己实现编译器。因此也没有将这个知识点加上。

再次感谢老大,让我受益非浅,谢谢!
3. 问题男 [未注册用户] 2004-09-09 23:42
岂敢岂敢?先生后生尔
4. FantasySoft 2004-09-10 00:08
还请老大以后多多指教,可惜您只留下了大名,却没有留下您的踪迹。还想着看看您的blog呢,呵呵~~

添加评论 | 返回随笔
返回顶部 | 返回首页