1. 程式人生 > >嵌入式知識分享:嵌入式學習需要精通C++語言嗎?

嵌入式知識分享:嵌入式學習需要精通C++語言嗎?

嵌入式學習需要精通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。 嵌入式學習