c语言 将url图片存到本地_有的嵌入式设备也提供C++编译器,那还有理由坚持使用C语言吗?...

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

23e4d19cdd3c403a62e5b9ac4cbaad2d.png

C++更好用?

C++更好用?

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

  • C++支持inline函数,它比define宏定义安全许多。
  • C++支持命名空间(namespaces)。
  • C++因为有模板和很多类型转换,因此类型安全性比C语言好。
  • C++支持函数重载。

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

9de972c9e3f0f3b28889f467562973a2.png

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

讨论

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

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

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

f262497313d14bf9ee5ad75ef5a90392.png

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值