__stdcall、__cdcel、__fastcall区别
来源:互联网 发布:中国的网络是局域网 编辑:程序博客网 时间:2024/05/18 00:27
1、常用场合
__stdcall:windows API默认的函数调用协议
__cdcel:C/C++、MFC默认的函数调用协议
__fastcall:适用于对性能要求较高的场合
2、函数参数压栈方式
__stdcall:函数参数从右至左压栈
__cdcel:函数参数从右至左压栈
__fastcall:函数参数从左开始不大于4字节的参数放入CPU和EDX寄存器,其余参数从右至左入栈
3、栈内数据清除方式
__stdcall:函数自己清理
__cdcel:函数调用者清理
__fastcall:函数自己清理
4、名字修饰(c语言)
__stdcall:编译后,函数名被修饰为:”_functionname@number”
__cdcel:编译后,函数名被修饰为:”_functionname”
__fastcall:编译后,函数名被修饰为:”@functionname@number”
(c++语言)
__stdcall:编译后,函数名被修饰为:”?functionname@@YG******@Z”
__cdcel:编译后,函数名被修饰为:”?functionname@@YA******@Z”
__fastcall:编译后,函数名被修饰为:”?functionname@@YI******@Z”
注:
1、_beginthread需要__cdecl的线程函数地址,_beginthreadex和CreateThread需要__stdcall的线程函数地址
2、一般WIN32的函数都是__stdcall。而且在Windef.h中有如下的定义:
#define CALLBACK __stdcall #define WINAPI __stdcall
参考:
http://blog.sina.com.cn/s/blog_701526f40100lcy6.html
http://blog.csdn.net/kiki113/article/details/4971886
- __stdcall、__cdcel、__fastcall区别
- __stdcall、__cdcel和__fastcall
- __stdcall、__cdcel和__fastcall三者的区别
- C语言学:__stdcall、__cdcel和__fastcall三者的区别
- __stdcall、__cdcel和__fastcall三者的区别
- __stdcall、__cdcel和__fastcall三者的区别
- C语言学习心得一:__stdcall、__cdcel和__fastcall三者的区别
- C语言学习:__stdcall、__cdcel和__fastcall三者的区别
- C语言学习心得一:__stdcall、__cdcel和__fastcall三者的区别
- C语言学习心得一:__stdcall、__cdcel和__fastcall三者的区别
- __stdcall、__cdcel和__fastcall三者的区
- __cdecl __stdcall __fastcall区别
- __cdecl,__fastcall, __stdcall 什么区别?
- __cdecl,__fastcall, __stdcall 什么区别?
- __stdcall,__cdecl,__fastcall的区别
- __cdecl,__fastcall, __stdcall 什么区别?
- __cdecl,__fastcall, __stdcall,__thiscall 区别
- __stdcall,__cdecl,__fastcall的区别
- 回调函数
- 并发基础整理
- ubuntu下安装theano
- scala基础----->scalacheat
- poj1062——昂贵的聘礼(dijkstra变形)
- __stdcall、__cdcel、__fastcall区别
- AsyncTask的基本使用
- jzoj 2554. 【NOIP2011模拟9.7】帕秋莉·诺蕾姬
- 聊天界面demo
- 数据类型
- 单例模式
- JQuery常用插件
- maven实现JS+CSS自动压缩
- 【64】滑动窗口的最大值