嵌入式编程是否应该使用C++替代C语言进行开发工作?

然而,C++已经逐渐普及,大约23%的新嵌入式软件项目都是用C++编写的。C语言发展到现在,差不多50年的时间了,现在正是c语言过渡到C++语言成为嵌入式开发主流语言的最佳契机。对于习惯了用...

1.前言
【嵌入式编程是否应该使用C++替代C语言进行开发工作?】 几十年来 , 嵌入式软件工程师们一直在争论是否应该使用C++++替代C语言进行开发工作 。根据2019年IEEE和github的市场调查显示 , 微控制器制造商提供的软件大部分都是由C语言编写 。

嵌入式编程是否应该使用C++替代C语言进行开发工作?
文章插图
事实上 , 56%的嵌入式软件是用C语言编写的 。然而 , C++已经逐渐普及 , 大约23%的新嵌入式软件项目都是用C++编写的 。C语言发展到现在 , 差不多50年的时间了 , 现在正是c语言过渡到C++语言成为嵌入式开发主流语言的最佳契机 。
对于习惯了用C语言开发的嵌入式程序员来说 , 对C++语言是有一些误解和偏见的 。
(1)C++执行效率低
(2)C++生成的目标代码大
(3)C++编程非常麻烦
(4)没有指针概念 , 操作底层寄存器很复杂
我认为 , 嵌入式工程师是应该好好去学习一下C++语言开发嵌入式程序的 , ARM的Mbed OS中也大量采用了C++编程语言 。拒绝接受新的事物 , 害怕推翻旧有思维 , 固步自封 , 这样才可怕 。
嵌入式工程师从C到C++的转换 , 需要学习的不仅仅是一门新的语言 , 而实际上学习的是一种编程思维模式 。就像刚开始学习嵌入式从裸机代码开始 , 然后慢慢学习RTOS或者Linux , 这不仅仅是接触新的东西 , 更是一种思维方式的转变 。学习C++需要理解的是面向对象的思维方式 , 还有各种设计模式 。从而在使用嵌入式开发的过程中 , 这些东西都是一种会用到的 。
下面从三个方面来说说嵌入式开发中采用C++编程的好处 。
2.引进新的设计模式
C语言在一定程度上为开发人员提供了一系列的封装函数可以使用 , 也提供了非常基本的多态的功能 。然而C语言实际上是一种面向过程的语言 , 这种就使得组合和继承变得十分的困难 。这些都会影响到总体设计架构的稳定性 。除非是一个C语言基础以及做过许多项目的人 , 才能很好的掌握C语言架构的设计 。一般的设计都会让软件函数的复用和扩展变得极其复杂 。
而C++则为开发人员提供了真正面向对象的设计模式 , 这种抽象的模块 , 使得程序的耦合性更低 。由于引脚了设计模式 , 所以在项目工程的移植上也十分的方便 , 这使得软件的复用性更好 , 这样可以加快产品的开发速度 , 缩短研发周期 , 降低工作量 。
3.C++是一种不断更新的语言
在如今复杂的开发环境中 , 随着时代的发展 , 越来越多先进的硬件解决方案被提出 , 所以需要更好用的软件和语言解决方案 , 这就意味着编程语言必须是不断的更新的 , 不断为开发人员提供最好的最先进的工具 。
我们来看一下C/C++版本的更迭情况:

嵌入式编程是否应该使用C++替代C语言进行开发工作?
文章插图
C++语言的更新与C语言不同的是 , C++不仅仅是修复了一些错误 , 更重要的是添加了一些新的特性和工具 。而且从更新频率上来说 , C++的更新最近都是大概每三年更新一次 。这可以很方便的适应新的系统和硬件平台 。
4.C++有着更加丰富的特性
嵌入式编程过程中,相比于用C语言 , C++有着更多的特性 。现在的编译器已经对编程语言的优化非常的友好了 。
C++中也是支持C语言操作的 , 所以这种方式也很十分容易的从C到C++的过渡 。
支持异常处理和错误捕捉 , 这是在嵌入式开发过程中非常高效的
支持虚函数
支持动态类型转换 , 多重继承 , 多态等 。
虽然会相对于C语言来说 , 会增加一些资源 , 但对于现在的嵌入式开发来说 , 多几KB已经不是什么问题了 , 嵌入式上使用C++编程却可以很容易的实现功能 。大大提高开发效率 。
5.总结
虽然目前来看 , 做嵌入式编程的主流语言还是C语言 , 但是却不能回避一个事实 , 在github上搜索嵌入式的工程的时候 , 越来越多的工程采用了C++进行编程 。毕竟在嵌入式语言占比中也接近1/4的比例了 。所以嵌入式开发需要去学习C++编程 , 并理解C++编程的思想 。随着时代的进步 , 处理器的发展 , 越来越多新的的特性被提出 , 相信只有与时俱进才能做时代的先锋 。

    推荐阅读