所謂無規矩不成方圓,嵌入式軟件開發同樣,MISRA(Motor Industry Software Reliability Association),在軟件設計中已經成爲舉足輕重的設計標準,保證軟件的安全性,許多的軟件質量度量工具都支持MISRA 的規則,因此咱們來學習下MISRA的規則,提高你的嵌入式軟件設計逼格。程序員
每條規則都被分類成「強制」(required)或「建議」(advisory )全部強制的規則具備同等重要性,全部建議的規則也如此。安全
強制規則: 這是對程序員的強制要求,基本上共有121 條「強制」規則。微信
建議規則: 這些要求程序員在一般狀況下都要遵照。然而它們不象強制規則那樣帶有強迫性質。通常共有20 條「建議」規則。要說明的是,「建議」不意味着能夠忽略這些規則,而是應該遵照直至合理的實現。工具
首先來看看對開發環境的幾條使用規則要求學習
不能有對未定義行爲或未指定行爲的依賴性。ui
這項規則要求任何對未定義行爲或未指定行爲的依賴,除非在其餘規則中作了特殊說明,都應該避免。若是其餘某項規則中聲明瞭某個特殊行爲,那麼就只有這項特定規則在其須要時給出背離性spa
多個編譯器和/ 或語言只能在爲語言/ 編譯器/ 彙編器所適合的目標代碼定義了通用接口標準時使用。.net
若是一個模塊是以非C 語言實現的或是以不一樣的C 編譯器編譯的,那麼必需要保證該模塊可以正確地同其餘模塊集成。C 語言行爲的某些特徵依賴於編譯器,因而這些行爲必須可以爲使用的編譯器所理解。例如:棧的使用、參數的傳遞和數據值的存儲方式(長度、排列、別名、覆蓋,等等)。設計
編譯器/ 連接器要確保31 個有效字符和大小寫敏感能被外部標識符支持。接口
ISO 標準要求外部標識符的頭6 個字符是大相徑庭的。然而因爲大多數編譯器/ 連接器允許至少31個有效字符(如同內部標識符),所以對這樣嚴格而並不具備幫助性的限制的適應性被認爲是沒必要要的。 必須檢查編譯器/ 連接器具備這種特性,若是編譯器/ 連接器不能知足這種限制,就使用編譯器自己的約束。
浮點應用應該適應於已定義的浮點標準
浮點運算會帶來許多問題,一些問題(而不是所有)能夠經過適應已定義的標準來克服。其中一個合適的標準是ANSI/IEEE Std 754 [21] 。浮點類型的定義提供了一個註釋所用浮點標準的機會,如:
/* IEEE 754 single-precision floating-point */
typedef float float32_t;
一天不用學習不少,記住幾條就行。
歡迎加入嵌入式程序猿,關注更多精彩內容,微信搜索嵌入式程序猿添加關注,或者直接掃描下方二維碼關注。
本文分享自微信公衆號 - 嵌入式程序猿(InterruptISR)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。