WINAPI代表什么?

时间:2012-11-19 22:21:17

标签: c windows api winapi winmain

我已经开始在C学习Win32 API了。 我看到主要功能类似于

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) { .. }

但我知道C中的函数就像

[ReturnType] [FunctionName] (Args) { .. }

在这种情况下,返回类型为int,函数名称为WinMain。 那么WINAPI代表什么是必要的呢?

谢谢。 :)

3 个答案:

答案 0 :(得分:13)

它指定了calling convention,这是函数的参数在堆栈上的放置和管理方式。

你可以混合使用调用约定,比如你是否正在调用一些外部代码,比如windows API,只要每个人都与他们的期望在同一个“页面”上。

使用所谓的cdecl编译典型的c调用。在cdecl中,调用者清理堆栈上推送的参数。

WINAPI,也称为“标准调用”,意味着被调用函数负责清理其参数堆栈。

MS编译器将使用_作为cdecl调用的前缀,而WINAPI获取前导_并在函数名称变形时获得函数名称前面的@ {BYTES-NEEDED}。从上面的链接:

call        _sumExample@8  ;WINAPI
call        _someExample   ;cdecl

答案 1 :(得分:3)

调用约定",定义为#define的宏并解析为__stdcall

了解更多on MSDN

  

名称的装饰方式取决于语言和方式   指示编译器使该函数可用,即   召集会议。标准的进程间调用约定   DLL使用的Windows称为WinAPI约定。它是定义的   在Windows头文件中作为WINAPI,后者又使用   Win32声明符__stdcall。

答案 2 :(得分:-3)

赢 - Windows

API - 应用程序编程接口

Windows应用程序编程接口