gpt4 book ai didi

c++ - 在 C++ 的 Win32 项目中,如何可能有除 main() 以外的入口点。 (WinMain)

转载 作者:太空狗 更新时间:2023-10-29 20:09:09 29 4
gpt4 key购买 nike

从我读过的有关 C 和 C++ 的书籍中,我了解到 C 程序的入口点必须是 main。直到现在我只制作了控制台应用程序,现在我开始学习 Windows 应用程序。所以我的问题是:

为什么 Win32 项目的入口点不是 main(而是 WinMain),怎么可能不同(也许 main 调用 WinMain?)?

附言。对不起英语不好

最佳答案

的确,C++ 要求 main 作为程序的“入口点”,至少在所谓的“托管实现”(您可能正在使用的实现)下是这样。这就是如果忘记定义 main 时 GCC 会出现链接器错误的原因。

然而,在实践中,程序结束和“运行时”开始之间的差距让事情看起来有点模糊——当你的程序启动时,第一个被调用的函数实际上是在运行时内部,最终会绕过调用 main。如果您忘记定义 main,实际上正是此调用导致链接器错误。

Microsoft 已决定,对于 Windows GUI 程序,它们的运行时将调用 WinMain 而不是调用 main。因此,您必须定义函数 WinMain 才能找到它,而不是 main。从技术上讲,这违反了 C++ 标准,但它之所以有效,是因为 Microsoft 使其有效。

关于c++ - 在 C++ 的 Win32 项目中,如何可能有除 main() 以外的入口点。 (WinMain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48846665/

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