硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2237|回复: 14
收起左侧

搞单片机有必要学习Cplusplus吗?

  [复制链接]

97

主题

537

回帖

843

积分

金牌会员

积分
843
发表于 2024-9-4 10:36:53 | 显示全部楼层 |阅读模式
用c加加写过几个产测的治具,没有实际用在工程上过。
(当时用的stmdunio,一个arduino的库,可以驱动stm32的芯片,然后这个库本身是用C加加写的。hal库好像不兼容C加加)
那个时候从菜鸟教程的网站了浏览了一下c加加的语法,用它的class的特性写了治具上的led闪烁驱动之类的简单功能。

可能是因为没看过高手是咋使用的原因,我自己写的时候感受不到C加加有啥优势。。。


共产主义一定胜利!
回复

使用道具 举报

42

主题

1024

回帖

1155

积分

至尊会员

积分
1155
发表于 2024-9-4 11:18:35 | 显示全部楼层
如果没感觉到CPP有什么优势,那说明没有体会面向对象编程的好处,这种情况下千万不要用CPP,用一个自己无法驾驭的工具,会带来糟糕的后果。特别是代码需要长期维护的,真不建议用CPP,多数人写C都写得跟狗屎一样,就更不用说CPP了。
回复

使用道具 举报

24

主题

195

回帖

267

积分

高级会员

积分
267
QQ
发表于 2024-9-4 11:56:56 | 显示全部楼层
我觉得是没有必要。

几乎没用过C++,哪怕开发arduino也是C语言。

但是有python的开发经验,面向对象的继承和重写功能在拓展原有功能时特别好用,针对不同的应用,重写一个类对某个方法增加微小的处理特别方便,开发功能复杂的应用工作量小很多。
但是随着继承关系的复杂,引入的排错成本指数增加,出了bug很难找,我觉得这个问题在单片机开发是致命的,毕竟单片机都是定制化应用,开发过程出bug本来就要排查软硬件、接线、通信质量等等多维度的问题。

个人觉得这些高级语言只适合纯软开发,会忍不住用方便的特性和语法糖,排错太困难。跟硬件相关的基础建设用C足够了。
回复

使用道具 举报

14

主题

248

回帖

290

积分

高级会员

积分
290
发表于 2024-9-4 14:38:39 | 显示全部楼层
ghslfgkkl88 发表于 2024-9-4 11:18
如果没感觉到CPP有什么优势,那说明没有体会面向对象编程的好处,这种情况下千万不要用CPP,用一个自己无法 ...

是的,感觉适应使用CPP开发需要一个长期的过程,我们使用CPP刚开始痛不欲生,经常踩雷,软件稳定性一直没下来,后期才好一点,但是最后代码膨胀的很大,要是不熟悉工程的人来维护的话,我估计看代码也要一个来月
回复

使用道具 举报

14

主题

37

回帖

79

积分

初级会员

积分
79
发表于 2024-9-4 17:59:42 | 显示全部楼层
如果不是开发 GUI 框架就不需要,OOP 确实有很多好处,给人非常直观,但是嵌入式软件开发,驱动这一块儿建议还是用 C,并实现 OOP 的一部分特性,比如封装(Encapsulation)。
回复

使用道具 举报

0

主题

280

回帖

280

积分

高级会员

积分
280
发表于 2024-9-4 22:31:16 | 显示全部楼层
能学的进去就学。
回复

使用道具 举报

2

主题

26

回帖

32

积分

新手上路

积分
32
发表于 2024-9-10 10:58:16 | 显示全部楼层
学一学当然更好,可以更好的学习面对对象编程的思想
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-9-11 00:33:52 | 显示全部楼层
基于c++的gui不少。那个touchgfx就是c++
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2024-9-11 11:45:23 | 显示全部楼层
嗯,我去学一下C++。我看QT上有用这个语言。学了可以自己写上位机了(笑)
共产主义一定胜利!
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2024-9-16 12:03:34 | 显示全部楼层
需要了解一下,
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2024-10-5 20:48:05 | 显示全部楼层
我5,6年前就从C转用c++写MCU程序了,自已程序基本全部用C++来写, 比C超级方便,代码也和C差不多,特别是c++11, c++17有些功能方便写代码!个人感觉比C方便,快多了!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2024-10-12 16:56:56 | 显示全部楼层
最近1个月尝试了系统的去报了一个班学了一下C++。
楼主帖子里的信息有误,现在hal库应该是支持c++了。

然后目前还在学习语法,到时候实际应用打算去试一下QT。
共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2024-10-12 16:57:22 | 显示全部楼层
jangyouhua 发表于 2024-10-5 20:48
我5,6年前就从C转用c++写MCU程序了,自已程序基本全部用C++来写, 比C超级方便,代码也和C差不多,特别是c+ ...

你现在的MCU用的都是多大的Flash一般?
共产主义一定胜利!
回复

使用道具 举报

3

主题

26

回帖

35

积分

新手上路

积分
35
发表于 2024-10-18 15:05:36 | 显示全部楼层
jangyouhua 发表于 2024-10-5 20:48
我5,6年前就从C转用c++写MCU程序了,自已程序基本全部用C++来写, 比C超级方便,代码也和C差不多,特别是c+ ...

完全赞同你的看法,我现在MCU也全是用c++写,面向对象对于MCU来说倒是其次,抽象能力比c强太多。安全性也比c好。
<array> ,<bitset>, <varant>,<optional>, <tuple>, lambda表达式,结构体的unpack,移动语义等等太多库及特性,非常切合嵌入式开发。
需要注意的是,开发单片机时,C++有一些东西千万别用(比如涉及到内存动态分配的一些容器),也就是说用c++的特性的一个子集,这样可以保证编译后的代码,与C没什么区别。
回复

使用道具 举报

34

主题

66

回帖

168

积分

初级会员

积分
168
发表于 2024-12-2 10:04:19 | 显示全部楼层
学东西没有必要不必要的问题,任何新技术新东西,你能掌握肯定是锦上添花的事,你要考虑的不是学什么东西的问题,你应该考虑的是你有有没有时间,有没有精力来学一门新东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 00:30 , Processed in 0.288981 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表