嵌入式编程与c语言有何区别,有的嵌入式设备也提供C++编译器,那还有理由坚持使用C语言吗?...
在嵌入式軟件程序開發中,C語言無疑是最常被使用的程序語言。不過應該明白的是,有些嵌入式硬件同時提供C語言程序編譯器以及C++程序編譯器,而相比于C語言,C++的確具備很多非常好用的特性。
C++更好用?
C++更好用?
小明是一名嵌入式軟件工程師,他擅長C語言和C++編程,現在需要在一款提供C++和C89編譯器的4KB RAM 硬件設備上進行程序開發,他覺得C++有下面這些好用的特性:
C++支持inline函數,它比define宏定義安全許多。C++支持命名空間(namespaces)。C++因為有模板和很多類型轉換,因此類型安全性比C語言好。C++支持函數重載。小明還有理由堅持只使用C89進行程序開發嗎?
還有理由堅持只使用C89進行程序開發嗎
討論
對于資源有限,比如RAM只有4KB的設備,我通常在正式開發C語言程序之前,會先寫一些樣例試水。天下沒有免費的午餐,C++的一些好用特性其實是以犧牲性能為代價換來的,例如RTTI,動態類型轉換,多重繼承,多態以及異常處理都會帶來一定的運行時開銷。
另外,在嵌入式環境中,通常需要在硬件設備可以正常使用之前對其初始化,如果沒有操作系統或者引導加載程序,這些初始化工作需要由程序員編寫的程序完成。
應該明白的是,C++程序中的全局對象的構造函數是在 main() 之前運行的,因此在某些情況下,程序員將不得不修改本地的CRT0.S,以便在調用全局構造函數之前完成硬件的初始化。
在調用全局構造函數之前完成硬件的初始
因此,如果希望使用C++方便的進行嵌入式程序開發,最好限制使用C++的一些開銷較大的高級特效。但是使用C++進行C語言風格的程序開發,倒不如直接使用C語言了。
此外,使用C語言進行嵌入式程序開發更容易把控最終生成的指令,能夠得到更精確的硬件控制,這對于資源匱乏的嵌入式設備來說是非常可貴的。尤其在RAM只有4KB的設備上開發程序,使用C++要小心很多細節,反而沒有使用C語言方便了。
還有種情況需要考慮,就是很多嵌入式設備并不提供C++編譯器,因此雖說大多數優秀的C語言程序員使用C++沒有什么問題,但是相比較而言,他們(包括我)更了解C語言,知道每一行代碼究竟會做哪些工作,以及開銷如何,這對于開發使用更小開銷實現更大效率的程序很有幫助。
使用更小開銷實現更大效率
C語言語法比C++語法簡單的多,也正因為如此,甚至很多程序員認為C語言是低級語言。正如前面所討論的,C語言的每一行代碼的意義都很明確,這使得C語言程序員把自己的精力主要花費在在硬件和構建良好的的和數據結構以及算法上,而復雜的C++則會讓程序員花費大量時間撓頭,想知道里面發生了什么,以及為什么不能在特定的環境和背景下做一些完全合理的事情,而只能服從編譯器。
簡單來說,C語言程序更加可控,而嵌入式程序員一般都是控制欲很強的性格,從這一層面考慮,C語言也更加適合嵌入式程序開發。
C語言也更加適合嵌入式程序開
小結
簡單來看,在嵌入式程序開發領域,C語言比C++更加合適主要有兩個原因:
1. C語言程序更好預測其代碼尺寸和開銷,這對于RAM只有4KB的資源匱乏的嵌入式設備來說來很重要。
2. 大多數嵌入式程序員更了解C語言,因此為了促進同事間的協調性,更推薦使用大家都喜愛的程序語言。
點個關注再走吧
歡迎在評論區一起討論,質疑。文章都是手打原創,每天最淺顯的介紹C語言、linux等嵌入式開發,喜歡我的文章就關注一波吧,可以看到最新更新和之前的文章哦。
未經許可,禁止轉載。
舉報/反饋
總結
以上是生活随笔為你收集整理的嵌入式编程与c语言有何区别,有的嵌入式设备也提供C++编译器,那还有理由坚持使用C语言吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tsp遗传算法 c语言,【分享】遗传算法
- 下一篇: 暴雪帝国辉煌能否延续