嵌入式(shi)開發常(chang)識C語言(yan)技巧(qiao)
時間:2024-10-16 來源:華清遠見
1、使用宏定義
功能:定義(yi)常量、定義(yi)宏函數、條(tiao)件編譯等。
優點(dian)是:是一種很好的(de)(de)替代函數(shu)的(de)(de)方式,增加代碼的(de)(de)可(ke)讀性和簡潔性
示例:

2、關鍵字register
功能:修飾一個(ge)寄存器變量。
優點:使用頻率特別特別高的數(shu)據,存(cun)在寄存(cun)器中,可(ke)以提高效率。
示例:

對比看int i; 和register int i;的運行(xing)時(shi)間(jian)
3、關鍵字volatile
功能:用來修飾(shi)會(hui)被不同(tong)線(xian)程訪問和修改的變量(liang)。
作用:確保(bao)(bao)編譯器不會對變(bian)量進行優化,保(bao)(bao)持內存的可見性。

4、位操作
功能(neng):位與& 位或| 異或^ 取反~ 左移<< 右(you)移>> 針對二進制
作用(yong):充(chong)分利用(yong)位操作,可以節(jie)省內存(cun)和提(ti)高(gao)效率。
示例:

5、自定義輕量級函數
作用(yong):使用(yong)自定義的(de)輕量級函數來(lai)替代標準庫函數,可以節(jie)省資源。
示例:

6、內存管理
作用(yong)(yong):嵌入式(shi)的(de)內(nei)存(cun)使用(yong)(yong)很(hen)關(guan)鍵。在使用(yong)(yong)malloc()函數進行動態內(nei)存(cun)分(fen)配的(de)時候(hou),使用(yong)(yong)結束后注(zhu)意使用(yong)(yong)free()函數進行內(nei)存(cun)釋放,避免內(nei)存(cun)碎(sui)片問(wen)題。
示例:

7、中斷處理實時事件
示例:

8、防止整型溢出
為了防止整型溢(yi)出,可以(yi)使(shi)用適當的數據類型和邊界檢查(cha)來(lai)確保數值(zhi)的正確性。

9、優化編譯選項
對代碼進行優(you)化,提高代碼執行的效率。
示例:
編譯指令:gcc -O2 example.c -o example
優化后的代碼可能會有(you)這些改變:
①循環展開:多個(ge)(ge)迭代合并為一個(ge)(ge),以減少循環開銷和分支預測。
②內聯函數:減少函數調用開(kai)銷。
③消除無用代碼,減(jian)少不必要的計(ji)算(suan)和內存訪(fang)問。
④優化寄存器使用,以減(jian)少內存讀寫,提高訪問速(su)度(du)。
⑤常(chang)量(liang)折疊:在編(bian)譯時計(ji)算常(chang)量(liang)表達式的值(zhi)(zhi),并將結果直(zhi)接替換(huan)成常(chang)量(liang)值(zhi)(zhi)。
10、函數指針數組
本質是一(yi)個數組,存儲的(de)元素(su)都是函數指針。
語法格式: 數(shu)據類型 (*數(shu)組名(ming)[長(chang)度])(參數(shu));
作用(yong):轉移(yi)表【C語(yu)言轉移(yi)表(Jump Table)是一(yi)種優化技術,可(ke)以(yi)用(yong)來代替一(yi)系列的if-else語(yu)句或switch語(yu)句,從而(er)提高代碼的執行效率(lv)。】

