我们什么时候应该设置 C++ Windows 桌面应用程序的入口点?
When should we set the C++ Windows desktop application's entry point?
对于为 C++ 应用程序设置入口点的最佳做法是什么,我有点困惑,我试图找到一些答案,但我所看到的一切都涉及 如何 这样做而不是 为什么 .
假设我有一个 Windows 具有 2 个构建配置的桌面应用程序:调试和发布。 Debug 具有子系统 SYSTEM:CONSOLE
,因此我可以 运行 并在控制台 window 中查看特定日志,而 Release 具有子系统 SYSTEM:WINDOWS
.
默认情况下,Debug 的入口点为 main
,而 Release 的入口点为 WinMain
。这意味着在我的 main.cpp
中定义 main(args)
和 WinMain(args)
。以下是我对此的一些疑问:
- 将发布的入口点设置为
mainCRTStartup
而没有 WinMain(args)
或在 [= 中同时定义 main
和 WinMain
是更好的做法17=]?
- 设置入口点是否存在重大差异或风险?
- 如果我的应用程序支持 Unicode,即使用
wmain
/wWinMain
,这些答案是否会改变?
- 如果这不是使用入口点设置的好例子,那会是什么?如果这个 是 使用入口点设置的一个很好的例子,那么不使用入口点设置的例子是什么?
我会说两者使用相同的入口点并完全跳过控制台构建。而是使用 VS 调试控制台。
您唯一会使用自定义入口点的情况是您根本不使用 MS C 运行时。而且我从来没有理由这样做。
对于为 C++ 应用程序设置入口点的最佳做法是什么,我有点困惑,我试图找到一些答案,但我所看到的一切都涉及 如何 这样做而不是 为什么 .
假设我有一个 Windows 具有 2 个构建配置的桌面应用程序:调试和发布。 Debug 具有子系统 SYSTEM:CONSOLE
,因此我可以 运行 并在控制台 window 中查看特定日志,而 Release 具有子系统 SYSTEM:WINDOWS
.
默认情况下,Debug 的入口点为 main
,而 Release 的入口点为 WinMain
。这意味着在我的 main.cpp
中定义 main(args)
和 WinMain(args)
。以下是我对此的一些疑问:
- 将发布的入口点设置为
mainCRTStartup
而没有WinMain(args)
或在 [= 中同时定义main
和WinMain
是更好的做法17=]? - 设置入口点是否存在重大差异或风险?
- 如果我的应用程序支持 Unicode,即使用
wmain
/wWinMain
,这些答案是否会改变? - 如果这不是使用入口点设置的好例子,那会是什么?如果这个 是 使用入口点设置的一个很好的例子,那么不使用入口点设置的例子是什么?
我会说两者使用相同的入口点并完全跳过控制台构建。而是使用 VS 调试控制台。
您唯一会使用自定义入口点的情况是您根本不使用 MS C 运行时。而且我从来没有理由这样做。