色欲av一区久久精品_久久综合色综合色88_无码在线观看不卡_色黄视频网站_亚洲国产精品久久久久秋霞66

嵌入式開發(fā):開發(fā)實時 C++ 應(yīng)用程序的5個技巧

時間:2022-06-21

對于網(wǎng)站建設(shè)公司來講,面向?qū)ο缶幊桃殉蔀殚_發(fā)應(yīng)用程序的一種非常流行和關(guān)鍵的編程方法。雖然傳統(tǒng)的嵌入式開發(fā)大多是使用過程語言 C 開發(fā)的,但 C++ 和其他面向?qū)ο蟮恼Z言正慢慢開始在實時系統(tǒng)中獲得牽引力。為了確保基于 C++ 的應(yīng)用程序不會膨脹代碼并充分利用面向?qū)ο蟮募夹g(shù),這里有5個使用 C++ 為基于微控制器的系統(tǒng)開發(fā)實時應(yīng)用程序的技巧。

 

技巧1 – 將 constexpr 用于常量,而不是 #define

  在為實時系統(tǒng)開發(fā) C++ 應(yīng)用程序時,constexpr 關(guān)鍵字優(yōu)于#define。constexpr 關(guān)鍵字保證是編譯時常量,并且與#define 不同,它具有明確定義的類型信息。例如,想要在 C 中創(chuàng)建版本號的開發(fā)人員可能會這樣寫:

  #define VERSION_MAJOR 1

  #define VERSION_MINOR 0

  #define VERSION_RELEASE 0 

在 C++ 中,首選方法如下:

  constexpr unsigned int version_major = 1U;

  constexpr unsigned int version_minor = 0U;

  constexpr unsigned int version_release = 0U;

  請注意,我們可以清楚地將 const 定義為 unsigned int。constexpr 關(guān)鍵字還可用于創(chuàng)建其他類型的常量,例如 int、float、數(shù)組等。


技巧2 – 使用命名空間來組織和封裝應(yīng)用程序數(shù)據(jù)

  在 C 中,嵌入式開發(fā)人員傾向于通過使用結(jié)構(gòu)或使用預(yù)處理器來定義常量值來組織數(shù)據(jù)。在 C++ 中,開發(fā)人員可以通過使用命名空間來組織應(yīng)用程序數(shù)據(jù),以便對其進(jìn)行封裝、組織和易于閱讀。C++ 中的命名空間可以使用以下語法定義:

  namespace data

  {

  unsigned int mydata;

  }

  在這種情況下,命名空間是數(shù)據(jù),并且有一個成員 mydata。訪問命名空間可以通過編寫完成:

  data::mydata

  它使用范圍解析運算符來指定 mydata 位于數(shù)據(jù)中。建議使用匿名命名空間、名稱如 data 的命名空間來創(chuàng)建局部靜態(tài)變量。

  

image.png


技巧3 – 在 NULL 上使用 nullptr

  C 中經(jīng)常遇到的一個問題是多個庫文件中定義了 NULL,并且每個定義不一致。這通常會導(dǎo)致混淆和使用 NULL 的潛在問題。在 C++ 中,定義了一個新的關(guān)鍵字 nullptr,可用于將指針分配給 null 并檢查指針當(dāng)前是否為 null。例如,

  // by default is initialized to null

  unsigned int * myptr;

  if(myptr == nullptr)

  {

  // Do something to initialize pointer

  }

 

技巧4 – 使用模板

  模板允許嵌入式開發(fā)人員創(chuàng)建可應(yīng)用于不同類型數(shù)據(jù)的函數(shù)或類。這允許開發(fā)人員創(chuàng)建單個函數(shù)或類,該函數(shù)或類可以輕松地為不同的應(yīng)用程序重用和擴(kuò)展。模板可以通過在函數(shù)或類前面使用 template 關(guān)鍵字輕松創(chuàng)建,如下所示:

  template

  void myFunction(const T&)

  {

  // Perform work on T

  }

然后可以通過執(zhí)行以下操作將該函數(shù)用于不同的數(shù)據(jù)類型:

  myFunction(1); // Passing in an int

  myFunction(3.14) // Passing in a float

  模板是一個非常強(qiáng)大的功能,可以顯著提高代碼重用和可伸縮性。

  技巧5 – 使用內(nèi)置的 bool 類型


  在 C 中使用 bool 總是感覺很棘手。嵌入式開發(fā)人員必須找到正確的庫 stdbool.h,但似乎并非每個編譯器都支持該庫,并且經(jīng)常迫使開發(fā)人員創(chuàng)建自己的定義。即使 bool 很容易找到,bool 也可以保存一個值,而不僅僅是簡單的真假,因為它存儲的不僅僅是一個位。任何 1 或更大的值都被認(rèn)為是真的。更糟糕的是,開發(fā)人員應(yīng)該使用 TRUE、True 還是 true! C++ 有一個內(nèi)置的 bool 類型,它只能保存 true 或 false 的值。一些非常簡單的東西,它使應(yīng)用程序的編程更簡單,并且可以使軟件更易于閱讀。


結(jié)論

  希望在實時應(yīng)用程序中使用 C++ 的嵌入式開發(fā)人員應(yīng)該遵循更多更改和建議,但這些技巧將幫助開發(fā)人員入門。


Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號

與項目經(jīng)理交流
掃描二維碼
與項目經(jīng)理交流
掃描二維碼
與項目經(jīng)理交流
ciya68