代码之家  ›  专栏  ›  技术社区  ›  schoetbi

是否存在对C++特性的标准限制?[关闭]

c c++
  •  2
  • schoetbi  · 技术社区  · 14 年前

    我将要开始一个新的实时项目。现在又有关于C与VC++的争论了。是的,我读过关于Linus和其他所有关于So的文章。

    首先,我倾向于使用C,但后来我读了一个答案,C++包含C。然后我在网上阅读关于“ Embedded C++ “。 根据这篇文章,EC++已经死了。但是我认为C++中的一种“特征指南”可以用来管理C++的复杂性。

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

    • 你使用嵌入式C++吗?
    • 在你的公司/项目中使用C++的其他特性还有其他的指导方针吗?(除了格式化指导原则)
    6 回复  |  直到 14 年前
        1
  •  4
  •   Gabriel Schreiber    14 年前

    我为嵌入式平台(ARM)开发专业软件。我们使用C++。 我们确实有许多共同和合理的指导方针,但是由于嵌入式系统,没有什么特别的指导方针。我们没有对C++特性的限制(没有例外禁止等)。

    “功能指南”可能会帮助您,但不会消除只学习语言的需要。这需要一些时间。如果你没有时间,选择一种可以更快学习的语言。

    至于C vs C+++EC+++:
    在另一家公司,我们为需要电池供电的嵌入式板开发了软件, 真正地 小内存。在这种情况下,C是足够的,但仍然不能提供真正的优势。如果不是这样的话,在C上选择C就像在德国高速公路上选择一辆踏板车。这太荒谬了。

    我刚刚读到了关于EC++的文章,但是我不知道它能提供什么好处。我就是做不到。没有EC++现在还有一个 强迫 您可以使用例外。

    我还没有听到任何合法的 喜欢C++而不喜欢C++的理由。

    我再说一遍。
    我不时地想到这个。避免C++可能只是一种策略,因为人们对学习C++非常感兴趣,然后他们争辩说有技术上的原因。

        2
  •  5
  •   Cubbi    14 年前

    我们的软件是实时运行的,在用示波器花了好几个星期之后,我不得不承认,在我们的硬件(奔腾M等)上,现代C++和它的地图和DeGuess的Debug TalpLoad所做的堆堆分配,以及所有由SyrdHypRTs完成的锁定,都通过了每一个延迟/抖动/决定论测试,我们可以来U。P与。

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

    我认为主要的指导方针是要有一个好的数字示波器。

        3
  •  4
  •   Gabriel Ščerbák    14 年前

    我想 MISRA 正是你想要的。

        4
  •  3
  •   James Curran    14 年前

    嵌入式C++基本上消除了异常,主要是因为它们给库添加了很多,而在嵌入式系统中,空间限制非常大。随着RAM变得更小和更便宜(40 GB iPod?)即使这样也不那么令人担心。

    我还没有听到任何比C更喜欢C的正当理由。

        5
  •  1
  •   Manoj R    14 年前

    这里有一个真实的场景。可能没有回答问题,但仍在穿插。

    一个流行的桌面软件被移植到手机上。代码是C++的。团队发现了使用虚拟函数的问题。问题是vptr指针占用了大量内存,这导致了问题的发生。团队返回时删除了所有虚拟函数,然后使用了函数指针。

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

        6
  •  1
  •   Thomas Matthews    14 年前

    从我在嵌入式系统领域30多年的经验来看,我更喜欢C++,而C++则在程序员较少工作的情况下,增加了更多的健壮性和安全性。

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

    如果是我的决定,我会用C++编程嵌入式系统。大多数情况下,选项已经设置为:c.:。-(