首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

函数调用的三种约定,你都清楚吗

__cdecl、__stdcall、__fastcall是C/C++里中经常见到的三种函数调用方式。...其中__cdecl是C/C++默认的调用方式,__stdcall是windows API函数的调用方式,只不过我们在头文件里查看这些API的声明的时候是用了WINAPI的宏进行代替了,而这个宏其实就是_...函数的调用,涉及参数传递,返回值传递,调用后返回,这都是通过栈的变化来实现的,对于三种调用约定而言: __cdecl: C/C++默认方式,参数从右向左入栈,主调函数负责栈平衡。...按照上面说的那样,__cdecl按照参数从右向左的方式进入栈区,注意Fun1()和Fun3()的区别,Fun1()在call Fun1()之后执行了add esp,8。...上图我们看到了__cdecl中由主调函数完成了,那么__stdcall呢,在被调函数Fun3()中,转向被调函数结尾处的代码,我们看到了这一句: ? 那么Fun1()结尾处又是如何呢? ?

1K10
领券