gzyueqian
13352868059

嵌入式知识分享:嵌入式学习需要精通C++语言吗?

更新时间: 2018-10-21 12:00:00来源: 嵌入式培训浏览量:6652

    嵌入式学习需要精通C++吗?

    假设把对C/C++的了解程度分为入门,熟悉,精通。「精通」之后再也没有更的形容词描述了,那么其实题主只要达到熟悉C/C++就足够了。嗯?我并不是指熟悉C/C++的语法。还有,问这个问题的小伙伴说的嵌入式开发是指单片机裸机开发还是在有底层提供API的单片机开发甚至在某些系统上进行开发呢?前两者重要的是C语言的基础知识以及其相关开发环境就足够了,而后者除了需要前者的知识,就可能还需要学习面向对象编程的思想及各种C/C++库等。正如小编所写,熟悉C/C++有几个含义,点是C/C++的基本语法和标准库的使用,比如数组、指针、strlib库(里面有strlen等函数)等;



    第二是C/C++的开发环境,比如单片机下有keil环境和IAR环境,,以及keil中带uC/OS系统的开发环境,IAR中ZigBee的Z-Stack协议栈的开发环境等,嵌入式Linux下的Linux开发环境,更别说Windows下的VS环境和MFC控件了;

    第三是C++的面向对象编程的思想,比如类的三大特性:继承、封装和多态。如果是做单片机开发,第三点面向对象编程的学习可以缓一缓。在代码存储空间只有8K、4K甚至2K的单片机开发环境下,根本不可能莫名其妙地继承一个什么对象。根据我的经验来看,在低端单片机开发中需要写main+while(主函数+大循环)的,就不可能用到面向对象编程,也不可能用到C++的new和delete;在嵌入式用某个框架开发,需要要继承Button,Window对象什么的,那基本是不用考虑while大循环的。当然,在什么环境下学C/C++也很重要,如果为了「精通」C/C++,而熟读《C程序设计语言》、《CPrimerPlus》、《征服C指针》、《EffectiveC++》和《C陷阱与缺陷》等这些书籍有什么用?依旧不知道如何使用UART、IIC、SPI等通信方式,不知道如何使用LCD、红外收发、蓝牙通信等各种单片机外设;

    依旧不知道如何在Linux下对一个文件进行读写,不知道如何建立一个TCP客户端。我专业是电子信息工程,本身也会学习C语言,但是我们专业更多的是在单片机上编写C语言程序。大四的时候我去面试一个iOS开发助理的岗位,招聘条件上就只写着熟悉C语言即可,我去了面试之后,面试没问我一个C语言的问题,指针问题也没问,就问我有没有用过什么控件?知不知道数据库?我一脸懵逼,自然也没有了下文。iOS开发使用的是Object-C语言,但这更多的是需要iOS开发环境Xcode下的知识而非纯粹的C语言语法知识。后来也有同学求职时候找我帮忙看下面试题,我看了一下,这项目依赖是什么鬼?我就直接和他说这不是我们专业的知识,虽然也是C语言的面试题。

    在嵌入式Linux下,除了C/C++语法,还需要掌握Linux命令行的操作,GCC,Makefile等,这里我基本和那位小伙伴是一个意思。只不过如果是在单片机裸机开发下,工作中就很少用到那些,这里更多关注的是以单片机为开发中心的原理图、PCB图、外围电路、电路板等,这已经属于硬件开发的层次了。有的公司会分工,硬件的做硬件,软件的写软件,也有些公司会让一个工程师软硬件全包了。说说点。C/C++的基本语法自然不用说,一定要打好基础。而标准库,Linux环境下自然不用说,肯定有stdio、stdlib等这些标准库,而这些在keil环境和IAR环境也有。标准库,标准库,就是说在C语言开发环境中必须标配的函数库。如下图keil环境,链接过程就有C/C++ Library。<img

免费预约试听课