c++ - 面向对象对嵌入式系统不利,为什么?

标签 c++ c embedded

许多嵌入式工程师使用 c++,但有些人认为它不好,因为它是“面向对象的”?

面向对象是否对嵌入式系统不利,如果是,为什么会这样?

编辑:这里是那些询问的人的快速引用:

so we prefer people not to use divide ..., malloc ..., or other object oriented practice that carry large penalty.

我想问题是在嵌入式系统的上下文中对象是否被认为是重量级的?这里的一些答案表明它们是,而另一些则表明它们不是。

最佳答案

虽然我不确定它是否能回答你的问题,但我可以总结一下我以前的公司源代码是纯 C 的原因。

首先值得总结一下情况:

  • 我们希望编写大量“核心”代码,这些代码在大量 ARM 嵌入式系统(主要是中端手机;智能手机和运行不同年龄的 RTOS 的手机)中具有高度可移植性
  • 这些平台通常有一个可用的 C 编译器,尽管有些平台不支持浮点“ double ”。
  • 在某些情况下,平台对标准库进行了合理的实现,但在许多情况下却没有。
  • C++ 编译器在大多数平台上不可用,并且在可用的地方支持 C++ 标准库、STL 或异常是高度可变的。
  • 调试器通常不可用(您可以将调试 printfs 发送到的串行端口被认为是一种奢侈)
  • 我们总是可以访问合理数量的内存,但通常无法访问合理的 malloc() 实现

鉴于此,我们完全使用 C 语言工作,即便如此,也只使用了一组受限的 C 89。生成的代码具有高度可移植性。不过,我们经常使用面向对象的概念。

如今,“嵌入式”是一个非常广泛的定义。它涵盖了从没有 RAM 或 C 编译器的 8 位微处理器到本质上是高端 PC(尽管不运行 Microsoft Windows)的所有内容——我不知道您的项目/公司在该范围内的位置。

关于c++ - 面向对象对嵌入式系统不利,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3274445/

相关文章:

c++ - C++中的文件命名

c - 如何声明和初始化指向char指针数组的指针数组?

python - 将变量从 python 实时传递到 C 的最佳方法

c - 什么是一个好的开源轻量级 c 库,具有在嵌入式系统中使用的基本实用功能

c - 在位数组中有效地查找 '1' 的位置

c++ - 如何到达vector<list<int>>的指定元素?

c++ - 嵌套的原子操作是否保证是原子的?

c# - 在 C# 中使用值参数模拟模板

c - 包含 char 数组作为成员的 Struct 数组 - C

c - LPC17xx : Check if RTC is running