许多嵌入式工程师使用 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/