1. gzyueqian
      13352868059

      嵌入式開發:C++中的結構與類

      更新時間: 2021-12-03 11:02:39來源: 粵嵌教育瀏覽量:11995

        C++是一種用于嵌入式開發的少數語言,但當項目變得太大而不能有效使用C時,開發者通常采用C++。這些開發人員通常從C轉換為C++,語言之間的細微差別代表了他們學習曲線的一個重要部分。C++的結構與C一樣,它們不相同。C++具有與結構非常相似的類。本文將詳細介紹這些語言元素。


        C語言中的結構


        C中的結構是一個定制的復合數據項(對象),它可以由現有的內置數據類型(int、char等)、位字段(指定位大小的整數)和其他結構構成。其思想是聚合屬于一起的多個數據項。


        在大多數情況下,在C中使用結構非常簡單,使代碼更容易理解,而不會影響執行效率。但是,嵌入式開發人員應該注意兩點:


        現代高端(通常為32位)處理器具有易于適應結構使用的指令集。事實上,它們正是為了做到這一點而設計的。然而,大多數低端CPU都不能提供這樣的效率,因此需要注意結構的使用。


        位字段是一個很好的特性,可以生成高效且可讀的代碼。嵌入式開發人員可能會立即發現一個機會:使用位字段訪問設備控制寄存器。許多外圍設備具有1字或1字節寬的寄存器,其中包含各種位字段。有時它可以發揮作用,但有兩個問題:


        位字段的精確布局由編譯器決定。如果所有內容都正確映射到設備上,代碼可能會正常工作。但是,更改編譯器,甚至只是更新編譯器,都可能會破壞代碼。


        編譯器生成的用于訪問位字段的代碼很可能會使用大量和/或操作以及對寄存器的多次訪問,這可能會有問題。此外,一些設備寄存器是只寫的,這在編譯器生成的代碼中永遠不會被容納。


        雖然C結構看起來有點像一種新的數據類型,但實際上并非如此。一個數據類型通常有一系列可以在其上執行的操作;對于C結構,情況并非如此。要對C結構執行任何操作,除了生成指向它的指針之外,還需要訪問內部字段,在嵌入式開發中,這件事用C++來解決。



        C++中的類


        C++語言具有許多面向對象的能力。其中之一是類的概念,它支持更像新數據類型的描述??梢詮念悓嵗兞?通常稱為對象),也就是說,這是一個新類型的對象。


        C++類的語法與C結構幾乎完全相同,有些非常相似的功能。然而,有一些重要的區別:


        類還可以包含函數(稱為方法)。


        成員變量和方法對外隱藏,除非它們的聲明遵循公共規則:


        可以有一對特殊方法–構造函數和析構函數–分別在創建和銷毀類(對象)實例時自動運行。


        可以使用特殊方法(成員函數)定義處理新數據類型的運算符。


        一個類可以用作另一個類定義的基礎(這稱為繼承)。


        聲明新類型的變量(類的實例;對象)只需要類的名稱,而不需要關鍵字class。


        C++中的結構


        除了類之外,C++還具有與C向后兼容的結構,然而,C++結構也具有與類所擁有的相同的附加能力。這只是C++中結構和類之間的唯一區別。正如我們所看到的,類中成員變量和函數的默認可訪問性是私有的;結構中的默認值是public。


        在C++中使用類和結構


        獲得這些信息后,我們強烈建議你不要過度利用這些信息。當你需要額外的功能時,有很多理由只使用C和類中提供的功能類型的結構。首先,這是一個代碼可讀性問題,編寫代碼時的一個關鍵優先事項是確保代碼可讀。另外,嵌入式開發人員可能對細節不太清楚,以“非標準”方式編寫的代碼將令人困惑。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日韩AV一区二区三区 | 日韩欧美视频在线精品网站 | 伊人麻豆影院青草国产 | 亚洲性爱视频久久艹 | 日韩少妇熟女一区二区 | 亚州三级久久电影 |