嵌入式 C:使用异常与否?

新手上路,请多包涵

我意识到这可能是主观的,所以会问一个具体的问题,但首先是背景:

我一直是嵌入式软件工程师,但通常在 OSI 堆栈的第 3 层或第 2 层。我不是一个真正的硬件人。我通常一直在做电信产品,通常是手机/手机,这通常意味着类似 ARM 7 处理器的东西。

现在我发现自己处于一个更通用的嵌入式世界,在一家小型初创公司中,我可能会转向“不那么强大”的处理器(这是主观的一点)——我无法预测哪个。

我已经阅读了很多关于嵌入式系统中 C++ 异常处理的辩论,但没有明确的答案。有一些关于可移植性和一些关于运行时的小担忧,但它似乎主要归结为代码大小(或者我读错了辩论?)。

现在我必须决定是使用还是放弃异常处理——对于整个公司来说,永远(它会进入一些非常核心的软件)。

这听起来像是“一段字符串有多长”,但有人可能会回答“如果你的一段字符串是 8051,那么不要。如果,OTOH,它是……”。

我往哪个方向跳?超级安全并失去了一个好的功能,或者特殊的代码,以后可能会遇到问题?

原文由 Mawg says reinstate Monica 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 482
1 个回答

在性能方面,我的理解是异常实际上减小了代码的 正常 执行路径的大小并提高了性能,但使异常/错误路径更加昂贵。 (通常 贵得多)。

因此,如果您唯一关心的是性能,我会说以后不要担心。如果今天的 CPU 可以处理它,那么明天也可以。

_然而_。在我看来,异常是要求程序员 始终 比合理预期的程序员更聪明的特性之一。所以我说 - 如果你 可以 远离基于异常的代码。远离。

看看 Raymond Chen 的 Cleaner,更优雅,更难辨认。他说得比我好。

原文由 John Knoeller 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题