几十年来,嵌入式开发人员一直在争论他们是否应该使用C或C++。大多数情况下,微控制器制造商提供的软件都是用C语言编写的,事实上,根据2019年嵌入式市场调查,56%的嵌入式软件是用C语言编写的。然而,C++已经逐渐普及,大约23%的新嵌入式软件项目都是用C++编写的。随着C接近第五十周年,现在可能是开始从C到C++的过渡时间了。以下是开发人员应该考虑改变的三个原因。
原因1:改进了体系结构实现
C编程语言确实通过函数指针为开发人员提供了封装和一些基本的多态性功能。然而,C实际上是一种过程语言,不需要额外的努力就不能提供诸如继承或组合之类的机制。这会使系统的总体架构设计不太理想,从而影响软件的重用和维护方式,甚至限制其灵活性。
C++为开发人员提供了实现真正面向对象设计模式的能力,开发了真正的抽象,并实现了设计模式,这些模式不仅可以从一个应用程序重用到下一个应用程序,而且还可以提高架构的灵活性。这允许软件被重用,这反过来又可以加快产品开发,缩短客户机应用程序的定制时间,以及许多其他优势。
原因2:C++是一种不断发展的现代语言
在当今复杂而创新的开发环境中,嵌入式开发人员不仅需要尖端的硬件解决方案,还需要尖端的软件和语言解决方案。这意味着用于编写软件的语言必须是最新的,以便为开发人员提供实现其系统所需的最新工具。C语言的上一次更新是在2018年,听起来好像是最近更新的。但是,如果你看一下标准,没有添加新功能,唯一的变化是修复了2011年发布的上一版本的问题!是的,修订后的标准花了七年的时间来解决上一个标准的问题!
看C++,标准委员会承诺每三年更新一次标准!与C语言不同的是,新的修订版不仅仅是bug修复,而是为该语言添加了新的特性和功能,使其成为最新的语言,并提供与其他语言(如Python)竞争所需的工具。新标准甚至删除了不推荐使用的功能,如三角图。
原因3:C++是一种更丰富的语言
直到3-4年前,我为微控制器编写的大多数嵌入式软件都使用C编程语言。C++总是提供比C更丰富的特征集,但在那个时候编译器似乎已经达到编译代码是等效的或更好的点。那时我开始潜心学习C++语言,发现语言变得多么丰富,还有更多的东西让我学习语言。C++允许嵌入式开发人员利用以下特性:
- 模板–允许独立于任何特定类型编写代码
- 动态多态性–允许在运行时分配实现
- 异常处理–捕获错误(对任何C开发人员来说都是惊人的)
- 编译时静态if语句
- 虚拟函数
这些只是几个例子,还有更多!所有这些工具使嵌入式系统的生活编程变得更容易。
结论
C++是一种现代的、进化的语言,C语言看起来是静态的,进化得慢得多。随着嵌入式开发人员在其系统中面临日益增加的复杂性,他们需要一种允许他们灵活并最大限度地重用的语言。许多“旧时代”的抱怨不再适用于C++,尤其是C++编译器已经变得多么高效。如果有时间开始转换到C++,这很可能就是它。