问题
我的硬件 C++ 和 C89 上有两个编译器
我正在考虑将 C++ 与类一起使用但没有多态性(以避免 vtables)。我想使用 C++ 的主要原因是:
- 我更喜欢使用“内联”函数而不是宏定义。
- 我想使用名称空间,因为我的前缀会使代码混乱。
- 我认为 C++ 类型更安全,主要是因为模板和详细的转换。
- 我真的很喜欢重载的函数和构造函数(用于自动转换)。
在为非常有限的硬件(4kb 的 RAM)进行开发时,您是否认为有任何理由坚持使用 C89?
结论
谢谢你的回答,他们真的很有帮助!
我想通了这个主题,我会坚持使用 C,主要是因为:
- 用 C 语言预测实际代码更容易,如果您只有 4kb 的内存,这一点非常重要。
- 我的团队主要由 C 开发人员组成,因此不会经常使用高级 C++ 功能。
- 我找到了一种在我的 C 编译器 (C89) 中内联函数的方法。
很难接受一个答案,因为您提供了这么多好的答案。不幸的是,我无法创建一个 wiki 并接受它,所以我会选择一个让我思考最多的答案。
原文由 Piotr Czapla 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 C 而不是 C++ 的两个原因:
此外,原始问题和一些评论都提到了 4 Kb of RAM 。对于典型的嵌入式处理器,RAM 的数量(大部分)与代码大小无关,因为代码是从闪存存储和运行的。
当然,代码存储空间的数量是需要牢记的,但随着市场上出现新的、容量更大的处理器,除了对成本最敏感的项目之外,它不再像过去那样成为问题。
关于将 C++ 的子集用于嵌入式系统:现在有一个 MISRA C++ 标准,可能值得一看。
编辑: 另见 这个问题,它引发了关于嵌入式系统的 C 与 C++ 的辩论。