2019年, EE Times 曾对嵌入式项目中的编程语言做过一个调查。其中,C语言以56%的占比稳居第一,C++以23%紧随其后。手头的嵌入式开发项目也是用的C++,于是想总结一下嵌入式中C++的使用心得。
创新互联建站于2013年成立,先为鹿泉等服务建站,鹿泉等地企业,进行企业商务咨询服务。为鹿泉企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。在嵌入式开发中,按照应用领域可以简单划分为:单片机 MCU,Linux 驱动/应用。在嵌入式Linux开发中,C++已经是绝对的应用层主力之一。本文所针对的应用领域主要是单片机MCU开发。
1. 为什么要用C++取代C呢?C++是C的超集,有许多C语言不具备的优势:
当然,以上方法大部分都可以通过C来实现,比如C++的类可以用C的函数指针来实现,但是大量的函数指针不仅会降低代码的可读性,也会极大地增加代码量。C++则可以在编译器层面有效改善这种情况,主流单片机的编译器也已经兼容C++。
2. 不适用于嵌入式的C++特性C++特性更多,功能更强大,但是受到单片机资源和应用场景的限制,并不是所有特性都适用。以下项目尤其需要特别注意:
一直有一种声音认为C++在嵌入式系统中比较低效,无论是速度还是大小,这到底是事实还是偏见?下边我们将C++的特性,与C语言实现效率进行对比,按照性价比由高到低可以分为三个等级:
将C++的特性对号入座,我们便有了下边这张图。其中,Templates 模板比较特殊,性价比的高低取决于具体的应用。在我们的嵌入式项目中,就是用Templates实现的底层代码,后期可以单独写一个例子。
那么,如何从C逐步过渡到C++呢?有如下参考:
最后,在网上看到很多对比C++与C的文章,十分认同一句话——“作为开发者,编程思想远远比语法糖重要的多。C with Class是编程思想的进步,虽然在语法难度上面它不值一提。”
相关参考:C++在嵌入式中表现如何? - 知乎
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧