为什么单片机开发中不常使用C++?

C++

1个回答

写回答

牛牛的小颖

2026-01-15 04:13

+ 关注

C++
C++

一般在单片机编程时,多用汇编或C语言,很少使用C++。究竟为何不推荐用C++进行单片机开发?下面以Keil和STM32为例,讲解用C++编写流水灯程序的相关内容,并分析为什么不推荐在嵌入式开发中使用C++。为什么C++不常用于单片机开发?大家对面向过程和面向对象的理解程度如何?C语言属于面向过程,C++则是面向对象。就本文而言,面向过程相较于面向对象,生成的代码量更少(bin文件更小),运行效率也更高。因此,C语言比C++代码量更小、运行速度更快。当然,这是指C相对于C++。实际上,汇编相比C,代码更精简,运行速度也更快。单片机的RAM和Flash资源有限,运行速度较低,因此很少有人用C++进行开发。随着单片机存储和运行性能提升,部分工程师已开始采用C++进行单片机项目开发。备好所需品在Keil MDK中用C语言开发STM32已很普遍,本文不再赘述开发环境安装与工程创建等基础步骤。需要掌握C++基础语法,本文内容较为简单,涉及类和对象等基础知识。没学过C++没关系,懂C语言即可。网上学C++基础,难度不大。 说明在Keil MDK开发环境中,采用ARM编译器。虽然网上多教程用V6编译,但V5和V6版本均支持C++语言编程,可根据需求选择合适版本进行开发。在项目工程里添加C++源文件,例如mAIn.cpp。

V5和V6在工程配置选项上存在一些不同之处:

ST的开发库均提供支持,你会看到类似以下代码:究竟啥意思?这段预处理代码表明,其主要作用是支持C与C++的混合编程开发。创建LED类定义本文假设读者已掌握用C语言开发STM32流水灯的基础,以下直接阐述C++代码相关内容。本文介绍一个基础示例点亮LED,使用C++实现有多种方法,下面呈现其中一种基本方式。首先,创建mAIn.cpp源文件,定义一个LED类:接着定义私有成员(当然,公有成员也可):其次,需要用到的函数包括:GPIO初始化、LED开启与关闭等操作。

AI
AI

这段代码很简单,即使不懂C++,只要熟悉C语言,应该都能理解。流水灯效果实现(主函数部分)C++的思路与C语言相近,先初始化,再进行实现:另有一种初始化方式:

编译后的代码量实际上会更大。

代码量大是一方面原因,更重要的是单片机领域长期以C语言为主流。现有大量成熟软件和方案基于C语言,可以说单片机的生态体系主要围绕C语言构建,而非C++

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号