MISRA C

MISRA C是由（MISRA）提出的C語言開發標準。其目的是在增進嵌入式系統的安全性及可移植性。針對C++語言也有對應的標準MISRA C++。

MISRA C一開始主要是針對汽車產業
，不過其他產業也逐漸開始使用MISRA C：包括航空、電信、國防、醫療設備、鐵路等領域中都已有廠商使用MISRA C。

MISRA C的第一版《Guidelines for the use of the C language in vehicle based software》在1998年發行，一般稱為MISRA-C:1998.。MISRA-C:1998有127項規則，規則從1號編號到127號，其中有93項是強制要求，其餘的34項是推薦使用的規則。

在2004年時發行了第二版的MISRA C的第一版《Guidelines for the use of the C language in critical systems》（或稱作MISRA-C:2004），其中有許多重要建議事項的變更，其規則也重新編號。MISRA-C:2004有141項規則，其中121項是強制要求，其餘的20項是推薦使用的規則。規則分為21類，從「開發環境」到「運行期錯誤」。

規則舉例

MISRA C的一些規則是針對運算符的限制，例如MISRA-C:2004的規則12.10為「不要使用逗号运算符」，也可以用其他方式達到一樣的效果。

動態分配記憶體功能是C語言的一大特色，可以在運行期依實際需求用malloc分配記憶體，在不使用此記憶體時再用free歸還，但許多問題也和未正確處理動態分配記憶體功能有關，例如MISRA-C:2004的規則20.4為「不能使用动态堆的内存分配」，限制malloc、free等程序的使用。

工具
有許多工具聲稱可以檢查代碼和MISRA規則相容性，不過MISRA沒有相關認證的程序。相關工具可以幫助使用者評估和比較檢查的結果，也會提供一些可符合MISRA-C規定的指南。

大部份的規定可以用支援靜態代碼分析的工具檢查，有些規定需要用支援的工具檢查。

以下是一些可以配合MISRA C規則進行檢查的工具：
 Polyspace
 
 
 
 
 
 
 
 

以下是一些可以配合MISRA C規則進行檢查的編譯器：

相關條目
代码风格
The Power of 10

參考資料

外部連結
 MISRA 網站 

计算机标准
C語言
C語言家族