gpt4 book ai didi

c++ 使用 winmain()

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:37 28 4
gpt4 key购买 nike

我刚开始学习使用 C++ 进行 Windows 编程。我有一个疯狂的印象,即 win32 编程是基于调用 Windows 函数并向它们发送参数以及从它们发送参数。就像,当你想创建窗口时,你调用一些处理 Windows GUI 的 win32 函数并说“嗨,请给我创建一个新窗口,100 x 100 像素,有两个按钮”,然后那个 GUI 函数说“嗨,没问题,当发生某些事情时,例如用户单击一个按钮,我将更改位于此位置的变量 xy”。

所以,我认为它与控制台编程非常相似。但是第一个指令让我感到惊讶。我一直认为每个程序都会先执行 main() 函数。因此,当我启动应用程序时,Windows 会在堆栈顶部存储一些参数并运行该应用程序。所以我假设初始化 main() 只是一种告诉编译器第一条指令应该在哪里的 C++ 方法。

但是在 win32 编程中,有一个名为 WinMain() 的函数首先启动。所以我有点困惑。我认为编译器必须以 main() 开头的规则,main 只是定义它从哪里开始,就像一些起点标识符。

那么,请问为什么有 WinMain() 函数而不是 main()?当我认为 C++ 编程和汇编程序一样合乎逻辑时,我又一次感到困惑。

最佳答案

main()WinMain() 一样是一个任意的入口点。为了保持一致性,该标准只需要一个名为 main 的函数。入口点(无论是 main 还是 WinMain)实际上是由隐藏函数调用的,该函数是真实入口点。在某些平台上,“真正的”入口点称为 _start。正是该函数完成了所有初始工作,例如初始化全局变量、设置环境等,然后它调用 main()。在 Windows 上,该启动函数恰好调用 WinMain()(如果可用)。

编辑:查看this answer以获得更详细的解释。

关于c++ 使用 winmain(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397983/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com