找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3176|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MISRA-C-2004-工業(yè)標(biāo)準(zhǔn)的C編程規(guī)范-PDF中文版下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:394566 發(fā)表于 2021-3-18 11:28 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
1 背景 —— C 的使用和問題
1.1 汽車工業(yè)中C 的使用
MISRA-C:1998 [1] 發(fā)布于1998 年。本文檔是它的修訂版本,用來解決與第一版本有關(guān)系的問題。


在汽車工業(yè)領(lǐng)域的實(shí)時嵌入式應(yīng)用中,C 編程語言的使用越來越體現(xiàn)出廣泛性和重要性。這在相當(dāng)程度上取決于該語言固有的靈活性、可支持的范圍及其潛在的訪問廣泛硬件環(huán)境的可移植性。詳細(xì)的理由包括:
  • 對于許多使用中的微處理器來說,如果存在其他除了匯編語言之外的可用語言,通常就是C。在許多情況下,其他語言根本就不可用于硬件。
  • C 對高速、底層、輸入/輸出操作等提供了很好的支持,而這些特性是許多汽車嵌入式系統(tǒng)的基本特性。
  • 由于應(yīng)用的逐步增長的復(fù)雜性,高級語言的使用較匯編語言更為適合。
  • 相對于其他一些高級語言,C 能夠產(chǎn)生較小的和較少RAM 密集性(RAM-intensive)的代碼。
  • 增長的可移植性需求。市場競爭要求在工程項目生命周期的任何階段,軟件可以通過移植到新的和/或低成本的處理器,目的是為了降低硬件成本。
  • 增長的自動產(chǎn)生 C 代碼的使用要求。C 代碼需要從模型包中自動產(chǎn)生。
  • 增長的對開放系統(tǒng)和主機(jī)環(huán)境(hosted enviroments)的興趣。


1.2 語言的不安全性和C 語言
沒有哪種編程語言能夠保證最終的可執(zhí)行代碼會準(zhǔn)確地按照程序員預(yù)想的那樣執(zhí)行。任何語言都會產(chǎn)生大量的問題,下面為其做了廣泛的分類,并描述了C 語言不安全性的例子。


1.2.1 程序員產(chǎn)生錯誤
程序員產(chǎn)生的錯誤,簡單的可以是變量名字的書寫錯誤,或者更為復(fù)雜的錯誤,如對算法的誤解。編程語言可以承受這樣的錯誤。首先,語言的風(fēng)格和表達(dá)能幫助或提示程序員清晰考慮其算法。其次,對于書寫錯誤,語言可以使從一個有效結(jié)構(gòu)向另一個有效(不是預(yù)想的)結(jié)構(gòu)的轉(zhuǎn)換變得輕松或困難。第三,當(dāng)錯誤發(fā)生時,語言可以檢測到也可能檢測不到。

首先,關(guān)于語言的風(fēng)格和表達(dá),使用 C 可以編寫出良好布局的、結(jié)構(gòu)化的和表達(dá)性強(qiáng)的代碼。還可以使用它編寫出不正當(dāng)?shù)暮吞貏e難以理解的代碼。很明顯,后者對于安全相關(guān)的系統(tǒng)是不可接受的。

其次,C 的語法特性足以使得書寫錯誤也能產(chǎn)生完全有效的代碼。例如,在“==”(邏輯比較)的地方寫成“=”(賦值)是很常見的,而且最終結(jié)果也幾乎總是有效的(但它是錯誤的);而if 語句的結(jié)尾出現(xiàn)的多余分號能完全改變代碼邏輯。

第三,C 的基本觀點(diǎn)是假設(shè)程序員知道他們在做什么,這意味著錯誤即使出現(xiàn)也不會被語言注意到而通過。在這方面C 體現(xiàn)出的軟弱性正在于它的“書寫檢查”(type checking)。舉例來說,C 不會拒絕程序員在使用整數(shù)代表true/false 值時卻在該整數(shù)中存儲了浮點(diǎn)值。大多數(shù)這樣的失配可以簡單地通過強(qiáng)制使其合適。如果C 的表現(xiàn)不得其所(a square peg and a round),它不會挑剔而會適合它們!


1.2.2 程序員不了解語言
程序員可能會誤解語言構(gòu)造的作用。對這樣的誤解,一些語言是更為開放的。
C 語言中有相當(dāng)多的地方能使程序員輕易產(chǎn)生誤解。例如運(yùn)算符優(yōu)先級的規(guī)則。這些規(guī)則是良好定義的,但也非常復(fù)雜,也很容易對某特定表達(dá)式中運(yùn)算符的優(yōu)先級做出錯誤的假設(shè)。







MISRA-C-2004-工業(yè)標(biāo)準(zhǔn)的C編程規(guī)范-中文版.pdf

455.63 KB, 下載次數(shù): 43, 下載積分: 黑幣 -5

MISRA-C-2004-工業(yè)標(biāo)準(zhǔn)的C編程規(guī)范

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表