主要功能中的"WINAPI"是什么意思?

Pyj*_*ong 49 c c++ windows winapi winmain

你能告诉我功能中的这个WINAPIWinMain()吗?

用最简单的方式..

#include <windows.h>

int -->WINAPI<-- WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, int nCmdShow)
{
    MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它只是一些Windows时髦模式吗?

它有什么作用?或者更确切地说,我还没有遇到过这个C++特性是什么?

bk1*_*k1e 55

WINAPI是一个评估为__stdcall特定于Microsoft的关键字的宏,该关键字指定被调用者清理堆栈的调用约定.函数的调用者和被调用者需要就调用约定达成一致,以避免破坏堆栈.

  • 调用约定关键字位于返回类型和函数名之间,因为这是多年前在C编译器上工作的人如何定义它.我不知道语法背后的原因,甚至哪个编译器是第一个支持指定调用约定(cdecl,pascal,fortran等).微软?Borland公司?格子?别的什么? (7认同)
  • 那为什么它在这个特定的地方呢?难道他们不能给上面的宏一行吗? (4认同)

Bri*_*ndy 7

WINAPI是一个扩展为__stdcall的宏,这意味着被调用者清理堆栈.


bob*_*mcr 7

这是一个宏定义,旨在表示Windows调用约定.来自MSDN:

装饰名称的方式取决于语言以及如何指示编译器使函数可用,即调用约定.DLL使用的Windows标准进程间调用约定称为WinAPI约定.它在Windows头文件中定义为WINAPI,后者又使用Win32声明符__stdcall定义.