嵌入式开发应该避免哪些c ++特性

coo*_*per 5 c++ embedded

我有兴趣编译一个不适合在嵌入式系统中使用的c ++特性列表(这可能会导致人们推荐c over c ++).如果您知道,请尝试添加原因,或将其原因添加到其他人的答案中.

这是一个开始(我知道的唯一一个)

  • 动态多态,不知道为什么,但有人说它"代价高昂"

Joe*_*oel 9

这里的联合攻击战斗机编码标准:http: //www2.research.att.com/~bs/JSF-AV-rules.pdf是如何使用C++进行嵌入式编程的非常好的概述.

动态多态性的禁令是90年代的延续,并没有合理的依据.调用虚拟功能不再需要进行切换和呼叫.如果要避免虚函数调用,也可以使用C.


zvr*_*rba 4

某些功能需要运行时支持,因此如果您错过了所需的支持,则应该避免使用这些功能。特别是,以下功能通常需要额外的运行时支持:

  • 例外情况
  • 实时时间间隔
  • 动态内存分配
  • 虚拟继承(对此有点不确定)

人们通常也会提到模板,但它们只是一种高级的宏工具——因此您可以在嵌入式系统中自由地使用它们。尽管如此,您可能还是想避免它们,因为它们可能会导致编译后代码膨胀。

您的嵌入式系统应该附带文档,说明可以使用哪些 C++(或其他)运行时支持(如果有)。

  • 虚拟继承不需要运行时支持。不过,这是有代价的(访问基类成员时的额外间接)。如果您需要避免运行时成本,那么您需要避免虚拟继承。 (7认同)