【问题标题】:Hiding the winmain() function隐藏 winmain() 函数
【发布时间】:2011-12-27 00:20:51
【问题描述】:

有没有办法在类中隐藏WinMain() 函数?谢谢。

【问题讨论】:

  • 您应该详细说明您想要实现的目标以及原因,并可能显示一些示例代码。
  • 应该从什么隐藏?
  • 为什么所有的反对票?你可能不同意他试图做的事情,但这个问题对我来说似乎很好。我明白他在问什么,这是一个可以真正回答的问题。为什么这值得反对?
  • 你为什么要“隐藏”你的入口点?只写一行WinMain 调用所有工作完成的类成员函数有什么问题?顺便说一句,winmain()WinMain 的功能不同,在 C++ 大写计数方面。
  • 虽然您可以使用#ifdef/#endif 将特定于平台的代码拆分出来,但如果您经常这样做,它往往看起来不太干净。拥有一个为每个平台定义接口和不同 cpp 文件的标头通常效果更好。

标签: c++ winmain


【解决方案1】:

不,没有。一个更好的问题是“你为什么想要”?在 Java 或 C# 中,主函数是静态类成员,不是因为它更好或更干净,而是因为该语言不允许非成员函数。在 C++ 中,它们是被允许的,在很多情况下甚至是被鼓励的。

将 main 函数(程序的入口点)置于“外部”更有意义。它从一个基本上空的环境开始,然后在调用实际应用程序逻辑之前设置任何需要设置的内容。

【讨论】:

  • Windows 使用存储在 PE 标头中的地址而不是名称来查找入口点。所以它实际上可以是任何具有正确调用约定的函数(尽管因为它永远不会返回,所以调用约定也不是非常重要)。可以很容易地想象将类静态成员函数的名称传递给链接器以用作入口点。
  • @BenVoigt:是的,但它不再是WinMain。 ;) 另外,任何不能通过摆弄源代码来完成的事情都是一种 hack。但是,是的,你是对的,它可以完成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
  • 2011-10-07
  • 2011-05-23
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
相关资源
最近更新 更多