gpt4 book ai didi

winapi - main 和 mainCRTStartup 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 14:50:57 26 4
gpt4 key购买 nike

我试图了解如何用不同的入口点替换 WinMain在 Microsoft 工具链中工作。

我已经找到 this question它非常有帮助,但最后一个细节一直困扰着我。

第一次换了Linker>Advanced>Entry Point Visual Studio 中的选项,我将其设置为 main错误地,我的程序编译并运行良好。后来我意识到了这一点,并用它设置为 mainCRTStartup 重建了程序。 ,正如链接问题中接受的答案所暗示的那样,并没有发现任何不同之处。

所以,我的问题是:main 之间有什么区别吗?和 mainCRTStartup ,如果是,有什么区别?

最佳答案

main() 是 C 或 C++ 程序的入口点。 mainCRTStartup() 是 C 运行时库的入口点。它初始化 CRT,调用您在代码中编写的任何静态初始化程序,然后调用您的 main() 函数。

显然,首先执行 CRT 和您自己的初始化是必不可少的。如果没有发生这种情况,您可能会很难诊断错误。也许你不会,这是一个废话。您可以通过将此代码粘贴到一个小型 C++ 程序中来进行测试:

class Foo {
public:
Foo() {
std::cout << "init done" << std::endl;
}
} TestInit;

如果您将入口点更改为“main”,那么您将看到构造函数永远不会被调用。

这不好。

关于winapi - main 和 mainCRTStartup 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22934206/

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