【问题标题】:Frameworks that Abstract Away Main抽象掉主要的框架
【发布时间】:2016-03-30 13:20:42
【问题描述】:

如何在不要求用户实现main 函数或类的情况下运行某些 C++ 和 C# 框架?

例如;在MVVM Cross 中,你实现了你的MvxApplication,一切都从那里开始。在wxWidgets 中,你实现了你的wxApp

框架是在其 API 中实现 main 还是完全绕过它?有没有抽象出主要框架设计的术语?这种设计有什么好处?

【问题讨论】:

  • 如果您逐步开始调试(Visual Studio 中的 F11),无论隐藏得多么好,执行都应该在 main 函数的开始处停止。如果 C# 方法有 DebuggerStepThroughAttribute,除非是 ofc,在这种情况下,您可以在 debugger settings 中覆盖它。

标签: c# c++ architecture wxwidgets


【解决方案1】:

在 wxWidgets 的情况下,您仍然会得到 main()WinMain(),它只是隐藏在 wxIMPLEMENT_APP() 宏中。主要好处是您不必在自己的代码中使用条件编译来定义Windows下的WinMain()和其他地方的main()(过去,曾经有其他平台使用main()以外的东西,但我相信它们现在都已经灭绝了)。

【讨论】:

    【解决方案2】:

    必须有一个main。所以这些框架必须提供自己的main,然后调用它们的框架特定的main(例如MvXApplication)。

    他们这样做的原因是因为框架必须要求在调用客户端代码之前/之后发生某些开始/结束函数调用或操作。而且这些操作可能太复杂或太多,需要客户端代码来完成。

    我不知道这个术语或名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2015-10-14
      相关资源
      最近更新 更多