在嵌入式软件程序开发中,C语言无疑是最常被使用的程序语言。不过应该明白的是,有些嵌入式硬件同时提供C语言程序编译器以及C++程序编译器,而相比于C语言,C++的确具备很多非常好用的特性。

C++更好用?

C++更好用?

小明是一名嵌入式软件工程师,他擅长C语言和C++编程,现在需要在一款提供C++和C89编译器的4KB RAM 硬件设备上进行程序开发,他觉得C++有下面这些好用的特性:

C++支持inline函数,它比define宏定义安全许多。C++支持命名空间(namespaces)。C++因为有模板和很多类型转换,因此类型安全性比C语言好。C++支持函数重载。小明还有理由坚持只使用C89进行程序开发吗?

还有理由坚持只使用C89进行程序开发吗

讨论

对于资源有限,比如RAM只有4KB的设备,我通常在正式开发C语言程序之前,会先写一些样例试水。天下没有免费的午餐,C++的一些好用特性其实是以牺牲性能为代价换来的,例如RTTI,动态类型转换,多重继承,多态以及异常处理都会带来一定的运行时开销。

另外,在嵌入式环境中,通常需要在硬件设备可以正常使用之前对其初始化,如果没有操作系统或者引导加载程序,这些初始化工作需要由程序员编写的程序完成。

应该明白的是,C++程序中的全局对象的构造函数是在 main() 之前运行的,因此在某些情况下,程序员将不得不修改本地的CRT0.S,以便在调用全局构造函数之前完成硬件的初始化。

在调用全局构造函数之前完成硬件的初始

因此,如果希望使用C++方便的进行嵌入式程序开发,最好限制使用C++的一些开销较大的高级特效。但是使用C++进行C语言风格的程序开发,倒不如直接使用C语言了。

此外,使用C语言进行嵌入式程序开发更容易把控最终生成的指令,能够得到更精确的硬件控制,这对于资源匮乏的嵌入式设备来说是非常可贵的。尤其在RAM只有4KB的设备上开发程序,使用C++要小心很多细节,反而没有使用C语言方便了。

还有种情况需要考虑,就是很多嵌入式设备并不提供C++编译器,因此虽说大多数优秀的C语言程序员使用C++没有什么问题,但是相比较而言,他们(包括我)更了解C语言,知道每一行代码究竟会做哪些工作,以及开销如何,这对于开发使用更小开销实现更大效率的程序很有帮助。

使用更小开销实现更大效率

C语言语法比C++语法简单的多,也正因为如此,甚至很多程序员认为C语言是低级语言。正如前面所讨论的,C语言的每一行代码的意义都很明确,这使得C语言程序员把自己的精力主要花费在在硬件和构建良好的的和数据结构以及算法上,而复杂的C++则会让程序员花费大量时间挠头,想知道里面发生了什么,以及为什么不能在特定的环境和背景下做一些完全合理的事情,而只能服从编译器。

简单来说,C语言程序更加可控,而嵌入式程序员一般都是控制欲很强的性格,从这一层面考虑,C语言也更加适合嵌入式程序开发。

C语言也更加适合嵌入式程序开

小结

简单来看,在嵌入式程序开发领域,C语言比C++更加合适主要有两个原因:

1. C语言程序更好预测其代码尺寸和开销,这对于RAM只有4KB的资源匮乏的嵌入式设备来说来很重要。

2. 大多数嵌入式程序员更了解C语言,因此为了促进同事间的协调性,更推荐使用大家都喜爱的程序语言。

点个关注再走吧

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。

未经许可,禁止转载。

举报/反馈

嵌入式编程与c语言有何区别,有的嵌入式设备也提供C++编译器,那还有理由坚持使用C语言吗?...相关推荐

  1. 嵌入式编程入门教程,学习设计嵌入式工程师

    俗话说万事开头难(然后中间难,最后难?),刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去看书也是找不到方向?又是arm,又是linux,又是uboot头都大了.不知道 ...

  2. 嵌入式编程与PC编程有何区别

    能从PC机器编程去看嵌入式问题,那是第一步:学会用嵌入式编程思想,那是第二步:用PC的思想和嵌入式的思想结合在一起,应用于实际的项目,那是第三步. 有些朋友是从PC编程转向嵌入式编程的.在中国,嵌入式 ...

  3. C嵌入式编程设计模式

    <C嵌入式编程设计模式> Bruce Powel Douglass著 刘旭东译 C嵌入式编程设计模式 标签: 读书笔记 嵌入式开发 C嵌入式编程设计模式 1 嵌入式系统有何特殊之处 11 ...

  4. 嵌入式编程规范及注意事项

    嵌入式系统已经在各行各业中得到了广泛的应用,随着人们的生活向信息化,智能化的发展,嵌入式技术将彻底融入到我们的生活,在我们的生活当中扮演越来越重要的角色.对于嵌入式系统来讲,嵌入式软件相当于嵌入式系统 ...

  5. 其实嵌入式编程还是很难很复杂的

    关注.星标公众号,直达精彩内容 来源:coolbacon 能从PC机器编程去看嵌入式问题,那是第一步:学会用嵌入式编程思想,那是第二步:用PC的思想和嵌入式的思想结合在一起,应用于实际的项目,那是第三 ...

  6. 嵌入式编程和PC编程的区别

    关注.星标公众号,直达精彩内容 来源:网络素材 在中国,嵌入式编程的朋友很少是正儿八经从计算机专业毕业的,都是从自动控制啊,电子相关的专业毕业的.这些童鞋们,实践经验雄厚,但是理论知识缺乏:计算机专业 ...

  7. 嵌入式编程C语言提高代码效率的14种方法

    嵌入式编程C语言提高代码效率的14种方法 1.在可能的情况下使用typedef替代define.当然有时候你无法避免define,但是typedef更好. typedef int* INT_PTR; ...

  8. C语言primcount素数计数,C语言与汇编的嵌入式编程:求100以内素数

    写汇编之前,需要搞清楚C语言代码的写法,这里以最简单的算法举例说明 C代码如下: #include void main(){ int i,j; int count=; for(i=;i<=;i+ ...

  9. 做嵌入式编程,为什么用的是C语言而不是C++呢?

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

最新文章

  1. 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(六)ndoutils安装
  2. Linux搜索查找命令合集
  3. matlab clabel函数用法,CLabel函数说明
  4. Javascript特效:普通倒计时
  5. 【转载】关闭ftp中mput的上传确认提示:prompt
  6. Linux/ubuntu AWK / BEGIN / END的用法
  7. PLC基础知识,详细解说PLC的优势,特点,功能,分类,应用领域及安装注意事项
  8. FeedDemon获共享软件年度大奖
  9. 100 年前科幻小说的概念,创造了今天千亿美元的市场
  10. android平板的隐藏空间如何开启,平板电脑怎么截图和怎么隐藏游戏?
  11. 代写COSC1295 Advanced Programming 作业、代做Java JDBC 程序设计作业、Java编程代写
  12. [杀毒]删除U盘autorun.inf
  13. 二哥回复读者:研三秋招一败涂地了,怎么办?
  14. Elastic Search Java API(文档操作API、Query DSL查询API)、es搜索引擎实战demo
  15. 第十七届全国大学智能车竞赛赛场合影集锦
  16. linux电脑系统桌面文件怎么恢复出厂设置密码,树莓派如何恢复LXPanel面板默认设置-恢复出厂设置英文...
  17. 起始2021-01-15
  18. sql中向下取整怎么取_Sql 获取向上取整、向下取整、四舍五入取整
  19. 未来电竞旗舰:iQOO 8系列售价3799元起
  20. Rime输入法小狼毫皮肤配色

热门文章

  1. 一些适用于前端开发的 Atom 插件
  2. NSUserDefault 的使用
  3. DirectUI介绍
  4. django1.4 关于处理静态文件的问题
  5. hdu-1438 钥匙计数之一
  6. NYOJ 982 Triangle Counting (数学题)
  7. [luoguP1773] 符文之语_NOI导刊2010提高(02)(DP)
  8. intellij 快捷键整理
  9. Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
  10. hdu 3948(后缀数组+RMQ)