久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 學習資源 > 講師博文 > 嵌入式C語言高級編程的技巧

嵌入式C語言高級編程的技巧 時間:2023-10-23      來源:華清遠見

嵌入式C語言高級編程的技巧

 C語言發明至今已經過去了60余年,但如今人們對它的討論依然熱度不減,C語言雖然入門簡單,但是難在精通,下文將會針對C語言在嵌入式系統中運用的編程技巧給大家做些詳解。

一:使用do{} while(0)封裝宏

#define TEST do{

//宏定義

}while(0);

把宏定義封裝起來,這樣的好處是后面加分號不容易出錯。

二:定長的類型

 在C語言中,不同的操作系統,變量類型所占的字節數是不同的,我們不能一貫的用C語言的基本的變量類型去定義變量,這樣在跨平臺的時候,代碼的通用性就會出現問題。

為了跨平臺,很多系統定義了一套自己的類型,比如:

uint8_t       //1個字節

uint16_t //2個字節

uint32_t      //4個字節

uint64_t        //8個字節

 所以,我們在編程中應當多使用上述的類型,盡量少使用int 、long,這樣能夠保證我們的代碼在不同的操作系統當中的通用性。

三:if判斷的順序顛倒

 在寫if判斷條件的時候,我們往往把= =的符號寫漏,導致判斷錯誤,但是在查找bug的時候全很難發現問題所在,所以在寫判斷的時候,我們可以把判斷條件反過來寫,既:

if(x == 5)

{

//假如寫漏了符號if(x = 5),編譯器依然可以執行,但意思已經改變

}

我們可以寫成:

if(5 == x)

{

//假如寫漏了符號if(5 = x),編譯器報錯

}

這樣的好處是,即便你寫漏了符號,編譯器會直接報錯,因為變量不能給常量賦值。

四:算法優化

算法優化指對程序時空復雜度的優化:

 在計算機上進行程序設計時一般不必過多關注程序代碼的長短,只需考慮功能的實現,但嵌入式系統就必須考慮系統的硬件資源,在程序設計時,應盡量采用生成代碼短的算法,在不影響程序功能實現的情況下優化算法。

五:循環運行效率

提高循環體效率的基本辦法就是降低循環體的復雜性:

 在嵌套循環語句中,應當把最長的循環放在最內層,最短的循環放在最外層。這樣可以減少 CPU跨切循環的次數。

六:儲存器分配

 由于成本限制,嵌入式系統存儲器容量有限。程序中所有的變量,包含的庫函數以及堆棧等都使用有限的內存:全局變量在整個程序范圍內都有效。

 程序執行完后才會釋放;靜態變量的作用范圍也是整個程序,只有局部變量中的動態變量在函數執行完后會釋放。因此, 在程序中應盡量使用局部變量,提高內存使用效率。

 程序中堆的大小受限于所有全局數據和棧空間都分配后的剩余量,如果堆太小,程序不能夠在需要的時候分配內存。因此在使用 malloc 函數申請內存之后一定要用 free 函數進行釋放, 防止內存泄露。

七:工程管理

 在一個完整的項目中,除了代碼功能的實現之外,工程的管理也尤為重要,一個好的工程項目,它的內部各項代碼的條理都非常清晰,而不會把所有的函數或者功能都放在同一個c文件當中,適當的封裝頭文件,自己定義c文件,使自己的工程模塊化,通用性有一個質的變化。

八:靈活運用extern和static關鍵字

 extern是聲明讓別的文件中能夠使用,static修飾之后的函數或全局變量不能被其他文件使用。

九:靈活使用void*

 void*常常用于函數地封裝比較多,當然也有用在其它地方,比如在結構體內定義void*類型的私有指針方便擴展結構體。我們平時在封裝自己的函數時,也可以多考慮看看有沒有必要使用void*使得函數地通用性更強一些。

十:使用宏給結構體初始化

如果頻繁使用一個結構體的話,使用使用宏來給結構體進行賦值是很方便的一種做法。

 #define  NEW_RECT(length, width)  {(length), (width)}

typedef struct _Rect

{

 int length;

 int width;

}Rect;

int main(void)

{

 Rect rect = NEW_RECT(10, 5);

  printf("rect length = %d, width = %d\n", rect.length, rect.width);

 return 0;

}

 

 

 

上一篇:Java運行中變量的注意事項

下一篇:嵌入式技術體系解讀

戳我查看嵌入式每月就業風云榜

點我了解華清遠見高校學霸學習秘籍

猜你關心企業是如何評價華清學員的

干貨分享
相關新聞
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部