🧭 MISRA 是什麼?
MISRA C++ 是一套專為安全關鍵系統設計的 C++ 編碼準則,旨在提升程式碼的安全性、可分析性與可維護性。
以下是 MISRA C++ 的詳細介紹,特別適合你這種關注模組化設計與嵌入式系統教學的技術教育者:
MISRA C++ 準則分為三類:
| 類型 | 說明 |
|---|---|
| Mandatory(強制) | 必須遵守,不能偏離 |
| Required(必要) | 應遵守,偏離需有書面理由 |
| Advisory(建議) | 最佳實踐,非強制 |
此外,每條準則還標註是否為 Decidable(可判定) 或 Undecidable(需人工判斷),以及是否適用於單一翻譯單元或整體系統。
MISRA C++ 和 ISO C++(即標準 C++)在設計理念與應用場景上有顯著差異。以下是針對這兩者的比較表,特別針對你在教學與模組化設計上的需求進行整理:
| 項目 | MISRA C++ | ISO C++(Standard C++) |
|---|---|---|
| 目的 | 安全關鍵系統的可靠性與可分析性 | 通用程式語言標準,強調功能完整性與效率 |
| 應用領域 | 汽車、航太、醫療、工業控制 | 桌面應用、伺服器、遊戲、科學計算等 |
| 語言子集 | 嚴格限制語法與特性(如禁止 RTTI、動態記憶體) | 支援完整語法與標準庫 |
| 編碼準則 | 強制、必要、建議三層級規範 | 無強制規範,依開發者自由使用 |
| 靜態分析支援 | 高度相容,如 PC-lint、Coverity | 支援但非強制,工具依需求選用 |
| 多型與繼承 | 限制虛擬函式、多重繼承、抽象類別使用 | 完整支援虛擬函式與繼承機制 |
| 例外處理 | 通常禁止使用 try/catch |
完整支援例外處理機制 |
| 標準庫使用 | 限制使用 STL(如禁止 std::vector) |
完整支援 STL 與 C++ 標準庫 |
| 可移植性 | 高度可移植,避免平台依賴 | 依標準實作,可能有平台差異 |
| 可教學性 | 適合教導安全設計與嵌入式限制 | 適合教導語言特性與設計模式 |
Sources:
| 13 | ||
|---|---|---|
| 1:23 AM - December 07, 2025 | ||
| 1:23 AM - December 07, 2025 | ||
| 1:23 AM - December 07, 2025 | ||
| 1:23 AM - December 07, 2025 | ||
| 1:22 AM - December 07, 2025 | ||
| 1:22 AM - December 07, 2025 | ||
| 1:22 AM - December 07, 2025 | ||
| 1:22 AM - December 07, 2025 | ||
| 1:22 AM - December 07, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 |