【发布时间】:2010-10-23 04:47:45
【问题描述】:
问题
我的硬件 C++ 和 C89 上有两个编译器
我正在考虑将 C++ 与类一起使用,但不使用多态性(以避免使用 vtables)。 我想使用 C++ 的主要原因是:
- 我更喜欢使用“内联”函数而不是宏定义。
- 我想使用命名空间,因为我的前缀会使代码混乱。
- 我认为 C++ 类型更安全,主要是因为模板和详细的转换。
- 我非常喜欢重载的函数和构造函数(用于自动转换)。
在为非常有限的硬件(4kb 的 RAM)进行开发时,您认为有什么理由坚持使用 C89?
结论
感谢您的回答,他们真的很有帮助!
我想通了这个主题,我会坚持使用 C 主要是因为:
- 用 C 语言预测实际代码更容易,如果您只有 4kb 的内存,这一点非常重要。
- 我的团队主要由 C 开发人员组成,因此不会经常使用高级 C++ 功能。
- 我找到了一种在我的 C 编译器 (C89) 中内联函数的方法。
您提供了这么多好的答案,很难接受一个答案。 不幸的是,我无法创建一个 wiki 并接受它,所以我会选择一个让我思考最多的答案。
【问题讨论】:
-
有一件事:永远清楚你在用哪种语言编写。不要试图用“C/C++”编写程序。用 C 编写,或用 C++ 编写,知道您将使用哪些语言功能,哪些不会。
-
定义“嵌入式开发”
-
@DavidThornley,您可能很适合嵌入式案例,但我非常惊喜地发现混合 C 和 C++ 代码可以很好地协同工作,我希望扩展常见的行业开源应用程序,例如Kamailio 与 STL。我正式鼓励这种 STL 和 C 代码的使用,因为它提供了巨大的功能和易于维护,同时产生几乎零问题(C++ 中缺乏嵌入式结构是对 C++ 的可怕罪行,应该尽快纠正)。
-
深思熟虑,这是一篇很棒的文章,ZeroMQ 的设计者和作者讨论了为什么他后悔用 C++ 而不是 C 编写代码库。这完全不是我所期望的,并且原因在其他地方找不到在本页。 250bpm.com/blog:4