对于实时应用程序,哪个更好的C或C ++?

时间:2009-12-18 15:16:31

标签: c++ c comparison visual-c++

我是具有C语言和C ++经验的电子工程师(我用C语言编写了微控制器,用C ++编写了我用Borland C ++ Builder编写的Windows)

我公司开发电机控制产品,我们正在使用STM32和IAR编译器。

我认识到语言之间的技术差异,我对开发海岸以及代码的维护成本感兴趣:

  1. 编写C ++代码的开发时间是否长于C?
  2. C ++代码的维护成本是否比C便宜? (我知道代码总是会有变化)
  3. 用C语言编写针对C的代码是否容易? (描述代码如何工作的文档)

11 个答案:

答案 0 :(得分:17)

这非常主观。我个人认为使用C ++进行开发在开发时间和维护方面的成本较低,特别是对于大型复杂项目。这是因为我见过的大多数大型复杂C项目总是以这种或那种方式最终实现C ++特性(例如多态)。另外,我认为某些C ++特性,如命名空间,数据封装和对象的自动初始化/破坏,增加了大型项目的可维护性;虽然这些事情中的一部分可以或多或少地模仿C中的不同程度的有效性。

但您的里程可能会有很大差异,具体取决于其他因素。例如,如果你的编程团队在使用C语言方面比C ++有更多的经验,那么在C ++中可能不值得这样做。

答案 1 :(得分:9)

  

是编写C ++的开发时间   代码比C更长?

这完全取决于您的程序员。他们擅长写C或C ++吗?

  

C ++代码的维护成本是多少   比C便宜? (我一直都知道   将是代码中的变化)

再次,将取决于您的程序员。您可以用任何语言编写可维护或不可维护的代码。

  

用C ++编写代码是否容易?   反对C? (描述的文件   代码如何工作)

完全取决于您的团队和您正在使用的工具,但我想他们可能会大致相同。

总而言之,这完全取决于你拥有的人以及他们最擅长的人。如果你试图将一堆C程序员放在一个C ++项目上,你可能会得到一些非常糟糕的C ++。同样,如果你试图将一堆C ++人员放在纯C项目上。

答案 2 :(得分:5)

  1. 取决于相关团队的经验。使用C ++,您可以访问更丰富的库函数(但在嵌入它们时要小心它们的足迹)。

  2. 精心设计的C ++代码比C代码更容易维护,因为它允许一些语法糖(构造函数,析构函数,RAII)。

  3. 文档费用差不多。

答案 3 :(得分:4)

答案 4 :(得分:3)

选择已知的邪恶
如果您/您的商店在使用C方面比使用C ++有更多的经验,请坚持使用C.我不会轻易地在关键任务项目中引入新技术。大多数时候,开发人员的资格对于项目成功而言比工具集更重要。

选择更好的工具集
在许多微控制器上,编译器技术落后于消费者桌面平台五到十年。一个好的编译器会让你不再担心微优化,有了一个不错的分析器(已经准备好并配备了武器),你可以跳过大量的猜测和自定义测量。

...这就是你如何使用它
在其他条件相同的情况下,这不是语言的选择,而是你如何使用它。 C ++的性能问题非常有限:

  • 更多可用功能还意味着您可以错误地使用更多功能。有使用它们的诱惑,因为它们听起来很酷,可能出现什么问题?
  • 了解相关/绝对成本的更多事项(例如成员函数调用,虚拟调用,异常......)
  • 根据其他代码,一段代码可能具有更多不同的含义,因此某些性能影响不像C中那样快速可见。

所有这些都是关于开发者的,而不是语言本身。

答案 5 :(得分:2)

你提到了readtime这个词,我理解这意味着性能对你很重要。在这一点上,我可以说,与C和C ++相比,C ++不会产生性能损失,并且可以在操作系统内核(Symbian)中使用。

然而,

C ++确实提供了可能降低性能的习惯用法。 Getter和Setter可能会导致生成额外的代码。与C代码相比,Vtable查找需要一些额外的指令。

在可维护性方面,还需要记住,系统程序员可能会更熟悉C,然后他们会使用C ++。

答案 6 :(得分:1)

语言选择与您提出的三个问题关系不大。选择您更有经验的语言,这样可以让您更具表现力。

答案 7 :(得分:1)

真的,两者都没有特定的优势。它更多地是关于你如何使用它而不是你正在使用它。

具体答案:

  1. 不,这通常取决于 开发人员的经验水平 语言。如果他/她更多 对C感到舒服,然后他会 写C比C ++快(和 反之亦然)。
  2. 与上述答案相同。维护也同样重要 最初的代码质量 书面,有时质量 文档。
  3. 这两种语言的文档语法完全相同。

答案 8 :(得分:1)

由于更强大的数据类型和对象约束,你绝对应该使用C ++:)

答案 9 :(得分:0)

我认为你提到的所有三点都取决于工具支持。 由于C ++很难解析并且更难以静态分析,因此某些工具可能只适用于C.

答案 10 :(得分:-1)

  
      
  1. 编写C ++代码的开发时间是否长于C?
  2.   

有时。有些实时应用程序根本无法在C ++中实现。

  
      
  1. C ++代码的维护成本是否比C便宜? (我知道代码总是会有变化)
  2.   

没有。它的应用程序很敏感。

  
      
  1. 用C语言编写针对C的代码是否容易? (描述代码如何工作的文档)
  2.   

一般来说,它们相当于。