【问题标题】:What does "WINAPI" in main function mean?主函数中的“WINAPI”是什么意思?
【发布时间】:2011-01-21 20:24:22
【问题描述】:

你能解释一下WinMain()函数中的WINAPI这个词吗?

以最简单的方式..

#include <windows.h>

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

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

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

【问题讨论】:

    标签: c++ c windows winapi winmain


    【解决方案1】:

    WINAPI 是一个计算结果为 __stdcall 的宏,这是一个特定于 Microsoft 的关键字,用于指定被调用方清理堆栈的调用约定。函数的调用者和被调用者需要就调用约定达成一致,以避免损坏堆栈。

    【讨论】:

    • 那为什么会在这个特定的地方呢?他们不能在上面给宏写一行吗?
    • 调用约定关键字位于返回类型和函数名之间,因为这是多年前从事 C 编译器工作的人定​​义它的方式。我不知道语法背后的原因,甚至不知道哪个编译器是第一个支持指定调用约定(cdecl、pascal、fortran 等)的编译器。微软?博兰?格子?还有什么?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        它是特定于 Windows 的。它指定调用约定。 WinMain 被 Windows 调用,这可以确保调用者和被调用者在调用约定上达成一致。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-02-11
          • 2015-09-25
          • 1970-01-01
          • 1970-01-01
          • 2014-01-29
          • 2015-01-12
          • 2019-12-29
          • 1970-01-01
          相关资源
          最近更新 更多