嵌入式系统应该避免C++的哪些特性?
请按以下原因对答案进行分类:
内存使用情况
代码大小
速度
可移植性
编辑:让我们使用带有64k ram的ARM7TDMI作为目标来控制答案的范围.
RTTI和异常处理:
增加代码大小
降低性能
通常可以用更便宜的机制或更好的软件设计来代替.
模板:
如果代码大小是一个问题,请小心它们.如果您的目标CPU没有或只有非常小的指令缓存,它也可能会降低性能.(如果不小心使用,模板往往会膨胀代码).Otoh聪明的元编程也可以减少代码大小.他的答案没有明确的答案.
虚函数和继承:
这些对我来说很好.我在C中编写了几乎所有嵌入式代码.这并没有阻止我使用函数指针表来模仿虚函数.他们从未成为一个性能问题.
选择以避免某些特征应始终行为的定量分析来驱动你的软件,在你的硬件,与你选择的工具链,制约下您的域名需要.在C++开发中有很多传统的智慧"不应该",它们基于迷信和古代历史,而不是硬数据.不幸的是,这通常会导致编写大量额外的解决方法代码,以避免使用某些人曾经有过某些问题的功能.
例外情况可能是应避免的最常见答案.大多数实现具有相当大的静态内存成本或运行时内存成本.他们也倾向于使实时保证更难.
看看这里为嵌入式C++写的编码标准的一个很好的例子.
文档" 信息技术 - 编程语言,它们的环境和系统软件接口 - 关于C++性能的技术报告 "也为嵌入式设备的C++编程提供了一些很好的信息.