繁体   English   中英

跨平台错误消息

[英]Cross-platform error message

当我的C ++跨平台(Windows,Linux,Mac)OpenGL应用程序无法初始化以让用户知道出错时,我想显示错误消息。

我的想法到目前为止:

  1. 将错误写入std :: cerr
    • 问题:未在Linux上运行时,Shell不会显示在Linux上
    • 问题:控制台始终显示在Windows上,即使不需要(如果编译为控制台应用程序)
  2. 使用GUI库
    • 问题:过度杀伤,因为其他一切都将使用OpenGL显示。 我使用GLFW获取窗口/上下文。
  3. 特定于平台的实现和#ifdef
    • 问题:我宁愿不想使用本机API,也可能不得不在以后扩展支持

你怎么解决这个问题?

wxWidgets(或类似的跨平台框架)。 或者,手动根据您的建议3。

GUI解决方案实际上是一个很好的解决方案,但问题确实是你需要另一个依赖,除非......

...您只需为每个平台编写一个函数,它将使用每个平台的GUI代码报告错误。

您只能为主平台实现其中一个错误功能报告,然后通过移植,编写其他版本。 如果您已经直接使用所有平台,那么对所有平台执行一次并继续使用它。

因为它只是报告一条消息,它应该不会很难,很长甚至是有问题的。

只需遵循KISS原则。

(注意:消息可以在下次启动时显示,而不是在问题发生时显示,这肯定会更安全)


话虽这么说,将来你可能想要更复杂的错误报告系统。 在这种情况下,值得投资开发您的错误报告代码作为一个单独的项目,它将拥有它自己的依赖项,并且只会被主项目的任何问题触发(无论它如何通信)。 在这种情况下,可以有另一个依赖,比如Qt(尽管它有点重量级......)或wxWidgets(也有点)或GTK(我对它的体验不是积极的,但它对于简单的事情是可以的)。 一个设计为轻量级和简单的GUI框架是FLTK,因此它可能非常简单轻便,可以放在应用程序旁边。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM