嵌入式開發(fā)中使用C語言的常見誤區(qū)

嵌入式開發(fā)中使用C語言的常見誤區(qū)

用單片機予借,針對的都是特定的mcu,資源非常少匈庭,而字符串處理、數據字符格式轉換等函數浑劳,在C語言標準庫中均通過堆(heap)中建立臨時空間來實現(xiàn)阱持;為了節(jié)約資源,在C用于單片機開發(fā)時呀洲,連接的是一個簡化的mini庫紊选,對動態(tài)空間申請的檢查、回收管理均是不完備的道逗,容易引起運行時錯誤兵罢,而且也沒足夠資源來進行運行時的錯誤處理。最為致命的是這些錯誤是運行時出現(xiàn)而不是編譯時出現(xiàn)滓窍!而且不知何時出現(xiàn)卖词。

因此在單片機上以下功能能不用盡量不用:

  1. 動態(tài)變量的申請和釋放:malloc 和free:空間不夠時,少量的可以重復使用一些變量空間吏夯;大量的可改用固定數組自己重復使用這些空間就可以了此蜈。除非能預見可能出現(xiàn)的所有情況,否則頻繁申請空間和釋放噪生,系統(tǒng)一定會崩潰冲杀!
  2. 和字符串相關的函數抱怔,包含printf够吩,sprintf等砍聊,因為C語言字符串處理使用了動態(tài)內存,而且資源不足桨嫁,對于你少量的格式轉換植兰,自己寫個程序來實現(xiàn),這樣連接時就不會把這部分代碼連接到目標代碼中璃吧,既可以使代碼短小運行速度快楣导,也可以避免一些錯誤,當有問題時也容易查錯畜挨。還有并非所以C編譯器都支持這些函數筒繁,有時需要自己寫點東西,如stdin stdout stderr(在avr 和stm32中都要自己重定向這三個函數)巴元;不用這些函數毡咏,你源代碼的可移植性就增強了。
  3. 少用浮點運算务冕;浮點運算得不多血当,如果需要在輸出的時間涉及小數幻赚,可以輸出時轉換一下禀忆,只要哪怕有一處使用浮點數臊旭,連接時就要連接整個浮點運輸庫,代碼增大很多箩退。
  4. 慎用迭代算法离熏,這通常出現(xiàn)在排序算法中,還有運行時計算表達式戴涝,這對于單片機來說堆棧很小滋戳,一不留神就出界了。
  5. 少用函數指針啥刻。這類高級的應用是C語言的特色奸鸯,但這類應用中要是還包括傳遞參數,甚至不同類型的參數可帽,要是有錯很難查娄涩。
  6. 對初學者,少用指針變量映跟,因為一不小心指向的就不是你想要的空間了蓄拣。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市努隙,隨后出現(xiàn)的幾起案子球恤,更是在濱河造成了極大的恐慌,老刑警劉巖荸镊,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咽斧,死亡現(xiàn)場離奇詭異,居然都是意外死亡贷洲,警方通過查閱死者的電腦和手機收厨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來优构,“玉大人诵叁,你說我怎么就攤上這事∏胀郑” “怎么了拧额?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長彪腔。 經常有香客問我侥锦,道長,這世上最難降的妖魔是什么德挣? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任恭垦,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘番挺。我一直安慰自己唠帝,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布玄柏。 她就那樣靜靜地躺著襟衰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粪摘。 梳的紋絲不亂的頭發(fā)上瀑晒,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音徘意,去河邊找鬼苔悦。 笑死,一個胖子當著我的面吹牛椎咧,可吹牛的內容都是我干的间坐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼邑退,長吁一口氣:“原來是場噩夢啊……” “哼竹宋!你這毒婦竟也來了?” 一聲冷哼從身側響起地技,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蜈七,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后莫矗,有當地人在樹林里發(fā)現(xiàn)了一具尸體飒硅,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年作谚,在試婚紗的時候發(fā)現(xiàn)自己被綠了三娩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡妹懒,死狀恐怖雀监,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情眨唬,我是刑警寧澤会前,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站匾竿,受9級特大地震影響瓦宜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜岭妖,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一临庇、第九天 我趴在偏房一處隱蔽的房頂上張望反璃。 院中可真熱鬧,春花似錦假夺、人聲如沸版扩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜻韭,卻和暖如春悼尾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肖方。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工闺魏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俯画。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓析桥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親艰垂。 傳聞我的和親對象是個殘疾皇子泡仗,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容

  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,293評論 0 6
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,093評論 1 32
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,770評論 0 38
  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,146評論 0 3
  • 在C語言中,五種基本數據類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,339評論 0 2