打印
[ARM入门]

单片机上为什么不建议用C++?

[复制链接]
460|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
通常来说,在单片机上编程,要么汇编,要么C语言,而用C++进行开发的很少,那么为什么不建议用C++开发单片机呢?
下面结合Keil、STM32,给大家讲讲用C++编写流水灯程序的内容,来看看为什么不建议用C++。
为什么很少用C++开发单片机

不知道大家对面向过程和面向对象的理解有多少?
C语言是面向过程的语言,C++是面向对象的编程语言。结合本文来说,面向过程相比面向对象的编程,生成代码量(bin文件)更小,运行效率更高。
所以,C语言相比C++具有更小代码量(bin文件)、更快的运行速度。

当然,这里是C相对C++而言。其实,汇编相对C而言,具有更小代码量和更快的运行速度。可以参看文章:用 汇编 和 C语言 写流水灯程序有什么不一样?
因为单片机的RAM和Flash资源相比较小,运行速度也相对较低,所以,你会发现:很少有人在单片机上面用C++开发项目。

其实,随着单片机的存储资源以及运行速度的增加,目前有些工程师开始用C++开发单片机项目了。
准备工作

在Keil MDK开发环境下,用C语言开发STM32比较常见了,什么开发环境安装、创建工程等这些步骤,本文不讲述这是Keil的基础教程

然后就是需要懂一些C++的基础语法,本文讲述的内容比较基础,用到C++很基础的知识。比如:类、对象这些基础内容。
没学过C++也没关系,只要懂C语言,在网上现学C++基础知识,难度都不大。
说明
在Keil MDK环境下,使用的是ARM编译器(Arm Compiler),很多网上教程使用V6编译,其实V5和V6版本都是支持C++编程语言的。
在工程中添加C++源代码(比如:main.cpp)



[color=rgba(0, 0, 0, 0.9)]使用V5和V6,工程配置的选项有些差异:

[color=rgba(0, 0, 0, 0.9)]ST的开发库都已经做了支持,你会看到这么一段代码:

#ifdef __cplusplus
extern "C" {
#endif

//这里C源代码

#ifdef __cplusplus
}
#endif
什么意思呢?这是一段预处理,从预处理代码可以看得出来,大概意思就是:支持C和C++混合编程

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:苏州澜宭自动化科技嵌入式工程师
简介:本人从事磁编码器研发工作,负责开发2500线增量式磁编码器以及17位、23位绝对值式磁编码器,拥有多年嵌入式开发经验,精通STM32、GD32、N32等多种品牌单片机,熟练使用单片机各种外设。

355

主题

2806

帖子

41

粉丝