WINAPI代表什么?

Vid*_*ron 10 c windows api winapi winmain

我已经开始在C中学习Win32 API.我看到主要功能是类似的

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) { .. }
Run Code Online (Sandbox Code Playgroud)

但我知道C中的函数就像

[ReturnType] [FunctionName] (Args) { .. }
Run Code Online (Sandbox Code Playgroud)

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

谢谢 .:)

Pau*_*bel 14

它指定了调用约定,即函数的参数在堆栈上的放置和管理方式.

您可以混合使用调用约定,例如,如果您正在调用某些外部代码,例如Windows API,只要每个人都在他们期望的同一"页面"上.

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

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

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

call        _sumExample@8  ;WINAPI
call        _someExample   ;cdecl
Run Code Online (Sandbox Code Playgroud)