WINAPI是什么意思?
作者:互联网
查阅windows程序设计,所示意思如下:
WINAPI是一个宏名,定义如下:
#define WINAPI _stdcall;
而std_call是新标准c/c++函数的调用方法,他是采用自动清栈的方式,而标准c调用(_cdecl方法,cdecl是C declare的缩写)采用的是手工清栈的方式。
那么就引出了一个新的问题,什么是自动出栈?什么是手动出栈?查阅baidu.com,整理如下:
- 自动清栈,就是指,由调用者来处理,被调用者不需要处理。
- 手工清栈,就是指,调用者不会管被调用的函数使用的栈,需要由被调用者自己处理。就是我原来说的__cdecl要手工清栈,所以不用担心压进去几个参数无所谓。所以像printf这种就是参数不限的调用,都是用__cdecl的,如果是自动清栈的话,他必定有长度要求,清理几个字节的堆栈,所以其他调用方式是不能实现参数个数不限的要求的。
- 调用约定种类:一共有5中函数调用约定(calling convention),它决定一下内容:
- 函数参数的压栈顺序
- 由调用者还是被调用者把参数弹出栈
- 产生函数修饰名的方法(C者C++在编译和链接的时候会重新给函数起一个名字,而这个名字的起法是根据std_call,cdecl这些来指定的)。
标签:调用,清栈,cdecl,WINAPI,什么,意思,函数,调用者 来源: https://blog.csdn.net/lisfaf/article/details/98990043