我有兴趣编译一个不适合在嵌入式系统中使用的c ++功能列表(这可能会导致人们推荐c over c ++)。如果您知道,请尝试添加原因,或将其原因添加到其他人的答案中。
这是一个开始(我知道的唯一一个)
答案 0 :(得分:9)
此处的联合攻击战斗机编码标准:http://www2.research.att.com/~bs/JSF-AV-rules.pdf非常好地概述了如何将C ++用于嵌入式编程。
动态多态性的禁令是90年代的延续,并没有合理的依据。调用虚拟功能不再需要进行切换和呼叫。如果要避免虚函数调用,也可以使用C。
答案 1 :(得分:4)
某些功能需要运行时支持,因此如果您错过了所需的支持,则应避免使用这些功能。特别是,以下功能通常需要额外的运行时支持:
人们通常也会提到模板,但它们只是一个高级宏工具 - 因此您可以在嵌入式系统中自由使用它们。不过,你可能想要避免使用它们,因为它们会在编译后导致代码膨胀。
您的嵌入式系统应附带文档,说明对C ++(以及其他方式)的运行时支持是否可用。
答案 2 :(得分:3)
您应根据设备选择功能。它可能对某些功能是明智的,也可能不是。这取决于它的架构。例如,Google为Android平台提供了缩减版的C ++编译器。简单的通用规则是避免导致繁重的运行时代码的构造。
答案 3 :(得分:2)
T
,则实例化int
与long
在大多数情况下与dynamic_cast
)的实例化完全相同
一种避免使用模板增加代码大小的方法,您可以编写代码的不安全核心版本,并使用薄型安全模板包装器。