C ++功能是否有标准限制?

时间:2010-09-24 19:13:19

标签: c++ c

我即将开始一个新的实时项目。现在有(再次)关于c vs c ++的争论。是的,我读到了关于Linus和所有其他线程的SO。

首先,我倾向于使用C,但后来我读到了C ++包含C的答案。然后我在互联网上阅读了“Embedded C++”。 根据这篇文章,EC ++已经死了。但我认为C ++的一种“功能指南”可能有助于管理C ++的复杂性。

所以现在我问自己(和你):

  • 您使用的是嵌入式C ++吗?
  • 您公司/项目中是否还有其他使用C ++功能的指南? (除了格式化指南)

6 个答案:

答案 0 :(得分:5)

我们的软件实时运行,在用示波器花了几周之后,我不得不在我们的硬件(pentium M等)上承认现代C ++,其所有堆分配都是由其map的default_allocator完成的, deques,以及shared_ptrs完成的所有锁定,都通过了我们可以提出的每个延迟/抖动/确定性测试。

操作系统设置(如禁用C2状态或调整驱动程序的内核线程优先级)比切换到内存池分配器或任何其他经典RT编程方法具有数量级更强的效果。当然,我们可以使用严格规范的C从相同的硬件中提取更多的微秒,但是开发和维护该软件的成本会使稍微更新的控制器的成本相形见绌。

我认为主要指导方针是获得良好的数字范围。

答案 1 :(得分:4)

我认为MISRA正是您可能正在寻找的。

答案 2 :(得分:4)

我为嵌入式平台(ARM)开发专业软件。我们使用C ++。 我们确实有许多共同和合理的指导方针,但由于嵌入式系统,我们没有具体的指导方针。我们对C ++功能没有任何限制(没有例外禁令等)。

“功能指南”可能对您有所帮助,但不会消除仅学习该语言的需要。这需要一些时间。如果您没有时间,请选择可以更快学习的其他语言。

C vs. C ++ vs. EC ++:
在另一家公司,我们开发了用于嵌入式电路板的软件,这些软件需要由电池供电并具有真正小内存。在那种情况下,C就足够了,但仍然没有真正提供优势。如果情况并非如此,选择C over C ++就像选择踏板车在德国高速公路上驾驶一样。这太荒谬了。

我刚刚读到了关于EC ++的内容,并且无法弄清楚它可能提供什么样的优势。我不能。如果没有EC ++,现在仍有一个强制使用例外。

  

我还没有听到任何合法的声音   之所以喜欢C而不是C ++。

我是第二个。
我偶尔想过这个。避免使用C ++可能只是一种策略,因为那些学习C ++的人太吵了,然后他们认为有技术原因。

答案 3 :(得分:3)

嵌入式C ++基本上删除了异常,主要是因为它们为库增加了很多,而在嵌入式系统中,你的空间受限。随着RAM越来越小更便宜(40 GB iPod?),即使这不是一个问题。

我还没有听到任何合理的理由偏爱C而不是C ++。

答案 4 :(得分:1)

这是一个真实的生活场景。可能无法回答这个问题,但仍有争议。

一种流行的桌面软件将被移植到移动设备上。代码是用C ++编写的。该团队在使用虚拟功能时遇到了问题。问题是vptr指针占用了很多内存,这导致了问题。团队回去删除所有虚函数,然后使用函数指针。

可能会出现这样的小故障,但在这种情况下,您可以随时返回并使用纯C编写该部分。

答案 5 :(得分:1)

根据我在嵌入式系统领域30多年的经验,我更喜欢C ++而不是C. C ++增加了更多的稳健性和安全性,程序员的工作量更少。

我已经在小平台以及具有巨大内存空间的平台上进行了编程。尝试使用C实现一些C ++功能仍然很痛苦。这些功能包括但不限于:异常,智能指针,继承和模板。

如果是我的决定,我会用C ++编写嵌入式系统。大多数时候,选择已经确定:C。: - (

相关问题