摘要:        
http://blog.csdn.net/goodname008/article/details/50662Visual C/C++的编译器提供了几种函数调用约定,了解这些函数调用约定的含义及它们之间的区别可以帮助我们更好地调试程序。在这篇文章里,我就和大家共同探讨一些关于函数调用约定的内容。Visual C/C++的编译器支持如下的函数调用约定:关键字清理堆栈参数入栈顺序函数名称修饰(C)__cdecl调用函数右à左_函数名__stdcall被调用函数右à左_函数名@数字__fastcall被调用函数右à左@函数名@数字thiscall(非关键字)被调用函数右&    阅读全文
posted @ 2012-10-22 13:46
vivianC
阅读(298)
评论(0)
推荐(0)
        
            
        
        
摘要:        
http://blog.sina.com.cn/s/blog_5fa3bba00100jkaa.html最大的区别就是__cdecl是由调用函数者释放堆栈,而__stdcall由被调用者释放。但是我们在调用任一种函数时,都没有进行显示的释放堆栈工作。这个工作由编译器完成,它帮我们生成了这个中间要使用的代码。这两种调用参数入栈方式一样, 都是先函数参数入栈,再是函数返回地址入栈,再是函数局部变量入栈。 这两种区别只是退栈时,谁来清除栈,这点不一样。 如下例子,是被调函数本身自己清除(比如stdcall那个汇编语句 ret 8),还是调用方清除(比如cdecl的add esp, 8)这点不一样。以    阅读全文
posted @ 2012-10-22 13:28
vivianC
阅读(239)
评论(0)
推荐(0)
        
 
                    
                 
 浙公网安备 33010602011771号
浙公网安备 33010602011771号