我已经开始学习的Win32 API在C.我看到的主要功能是一样的东西
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) { .. }
但我知道,在C的功能就像是
[ReturnType] [FunctionName] (Args) { .. }
在这种情况下,返回类型为int而函数名的WinMain。 那么,是什么在WINAPI代表和有必要吗?
谢谢 。 :)
它指定调用约定 ,该是多么函数的参数都放在和堆栈管理。
你可以混合调用约定,说如果你调用一些外部的代码,如Windows的API,只要每个人都一样“页”与他们的期望上。
典型的C呼叫使用编译的什么作为的cdecl。 在CDECL调用者清理参数压入堆栈。
WINAPI,也被称为“标准呼叫”指的是被调用的函数是负责清理它的参数堆栈。
在MS编译器将一个前缀的cdecl调用了_,而WINAPI获得一个领先_,并得到一个@ {BYTES急需}前面加上当轧液的功能名称的功能名称。 从上面的链接:
call _sumExample@8 ;WINAPI
call _someExample ;cdecl
这是“调用约定”,定义为宏观与#define
和解析为__stdcall
。
了解更多关于MSDN :
名都装饰的方式取决于语言和编译器指示如何使现有的功能,也就是说,调用约定。 适用于Windows的DLL中使用的标准的进程间调用约定称为WinAPI的约定。 这是在Windows头文件中定义为WINAPI,其又使用Win32说明符__stdcall定义。