本文將從編寫利于優(yōu)化的源代碼,節(jié)省棧和內(nèi)存空間,函數(shù)原型,整型和位取反,同時讀寫變量的保護,不進行初始化的變量這幾個方面來討論如何編寫良好的嵌入式C代碼。
選擇一種合適的數(shù)據(jù)結(jié)構(gòu)很重要,如果在一堆隨機存放的數(shù)中使用了大量的插入和刪除指令,那使用鏈表要快得多。數(shù)組與指針語句具有十分密切的關(guān)系,一般來說,指針比較靈活簡潔,而數(shù)組則比較直觀,容易理解。對于大部分的編譯器,使用指針比使用數(shù)組生成的代碼更短,執(zhí)行效率更高。
C 語言把文件看作是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))的數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為 ASCⅡ 文件和二進制文件。文件的操作包括:文件的打開、文件的關(guān)閉、文件的讀寫操作、文件狀態(tài)檢查以及文件的定位等。
整型提升是C程序設(shè)計語言中的一項規(guī)定:在表達式計算時,各種整形首先要提升為int類型,如果int類型不足以表示的話,就需要提升為unsigned int類型,然后再執(zhí)行表達式的運算。
有限狀態(tài)機是一種概念思想,把復(fù)雜的控制邏輯分解成有限個穩(wěn)定狀態(tài),組成閉環(huán)系統(tǒng),通過事件觸發(fā),讓狀態(tài)機按設(shè)定的順序處理事務(wù)。單片機C語言的狀態(tài)機編程,是利用條件選擇語句( switch 、 case 或者 if 、 else )切換狀態(tài),通過改變狀態(tài)機狀態(tài),讓程序按設(shè)定的順序執(zhí)行。
void 與 void*;volatile關(guān)鍵字 ;數(shù)據(jù)占用大小……
寫好C語言,漂亮的宏定義很重要,使用宏定義可以防止出錯,提高可移植性,可讀性,方便性等等。下面列舉一些成熟軟件中常用的宏定義。
如何保證C語言的執(zhí)行效率?
最近應(yīng)邀在??途W(wǎng)寫 C++ 求職專欄,又把以前的秋招總結(jié)補充了很多東西,現(xiàn)在想想還是發(fā)出來,希望能夠幫助更多的新手小伙伴們。
日志框架可以自己編寫(需要一定的能力哦),也可以由第三方(例如:log4cplus)提供。對于不同的日志框架,各自在實現(xiàn)方式上也有所不同。
結(jié)構(gòu)體、聯(lián)合體是C語言中的構(gòu)造類型,結(jié)構(gòu)體我們平時應(yīng)該都用得很多。但是,對于聯(lián)合體,一些初學(xué)的朋友可能用得并不多,甚至感到陌生。
一文了解C語言和C++的特點與用法。
今天跟聊一下 BAT 面試 C++ 開發(fā)工程師必問的一個考點:智能指針。
NoSQL開發(fā)中或多或少都會用到,也是面試必問知識點。最近這幾天的面試每一場都問到了,但是感覺回答的并不好,還有很多需要梳理的知識點,這里通過幾篇Redis筆記整個梳理一遍。
字符串是一種非常重要的數(shù)據(jù)類型,但是C語言不存在顯式的字符串類型,C語言中的字符串都以字符串常量的形式出現(xiàn)或存儲在字符數(shù)組中。同時,C語言提供了一系列庫函數(shù)來對操作字符串,這些庫函數(shù)都包含在頭文件string.h中。
Spring Boot 2.4 開始逐步提供對 GraalVM 的支持,旨在提升上文所述的 啟動、內(nèi)存、響應(yīng)的使用體驗。
一文了解synchronized。
為什么要學(xué)習(xí)C/C++/object-c?如何學(xué)習(xí)C/C++?本文簡單整理了一些C++圖書列表,按順序閱讀,可涵蓋入門到精通。
學(xué)C語言的一定要看!
這篇文章來聊聊大名鼎鼎的GDB,它的豪門背景咱就不提了,和它的兄弟GCC一樣是含著金鑰匙出生的,在GNU的家族中的地位不可撼動。相信每位嵌入式開發(fā)工程師都使用過gdb來調(diào)試程序,如果你說沒有用過,那只能說明你的開發(fā)經(jīng)歷還不夠坎坷,還需要繼續(xù)被 BUG吊打。