<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > C++在嵌入式應用中的安全問題

          C++在嵌入式應用中的安全問題

          作者: 時間:2011-05-28 來源:網(wǎng)絡 收藏

            規(guī)則16-6-1 (不容討論) 所有的庫函數(shù)代碼必須符合MISRA C++

            上述這些例子只是為了讓大家對MISRA C++:2008的3種規(guī)則有一定的認識,我們會結合相關內(nèi)容,在接下來的幾篇文章中進一步討論學習。不難發(fā)現(xiàn),許多違反了MISRA C++:2008中規(guī)則的例程都是符合C++語言標準的,但出于性考慮,應當被禁止或者謹慎使用。通覽之后,往往會發(fā)現(xiàn)自己平時從未注意的一些編程習慣,都已經(jīng)被嚴令禁止。它們有些是明顯有礙性的,有些則相對隱蔽。

            然而MISRA的號召力是不容小覷的。以實時操作系統(tǒng)μC/OS-II為例,其2.52版本雖然已經(jīng)于2000年通過了美國航空管理局(FAA)的認證,但2003年μC/OS-II的作者就根據(jù)MISRA C:1998規(guī)范又對源碼作了相應的修改,并發(fā)布了2.62的新版本,宣稱其源代碼99%符合MISRA C:1998的要求。

            4 安全性

            對于安全性,MISRA給出以下5種可能的安全來源:開發(fā)人員的錯誤、開發(fā)人員對于語言的誤解、編譯器沒有按照開發(fā)人員的預期工作、編譯器本身含有錯誤、運行錯誤。

            這些錯誤的來源與實際使用的是何種計算機語言沒有關系,可以說比較全面地包含了系統(tǒng)開發(fā)以及其他相關的軟件設計中可能導致安全的所有渠道。

            作為C++這樣一門面向對象的高級語言(由于其與C的淵源,嚴格地說,C++是具有某些面向對象特征的過程語言),通過類、函數(shù)參數(shù)類型檢查、模版、異常處理以及派生、繼承、多態(tài)等手段,使得其在保有高效率的同時,實現(xiàn)了強大的功能,并帶來了自頂向下的模塊化程序設計理念。但編程靈活度的提高,也令其代碼復雜而易錯。與C語言相比,它所面對的安全問題將更為隱蔽,更加難以發(fā)現(xiàn)。但就對數(shù)據(jù)的封裝而言,C++遠遠優(yōu)于C,只要參照合理的規(guī)范指南,進行項目的開發(fā),就可以通過充分發(fā)揮C++靈活的特點,到更多更廣的工程領域。

            5 行業(yè)展望

            標準與規(guī)范從來沒有如眼下這般備受重視過。一個權威的標準或規(guī)范,不僅將成為相關領域的“金科玉律”,更是行業(yè)動向的風向標??梢哉f正是由于MISRA-C的存在,使得在高級語言種類繁多的今天,C語言的地位依然無可替代。

            此次MISRA攜著在C語言上的巨大成功,選擇了C++語言進行新的規(guī)范化嘗試,不僅因為C++語言的群眾基礎深厚,更是表明了系統(tǒng)領域內(nèi)大多數(shù)專家的觀點:如果說未來能有一門語言取代目前C語言在嵌入式系統(tǒng)中的地位的話,也只能是C++語言。一名成功的嵌入式系統(tǒng)工程師,必須是對行業(yè)動向極為敏感的,也只有這樣,才能在知識爆炸的今天緊跟時代潮流。從使用C語言到使用C++語言是一個巨大的跨越,決不僅僅像使用“增強的C”那么簡單,需要從現(xiàn)在就開始學習。而從學習之初就養(yǎng)成的良好的語言使用習慣,將決定將來進階的速度與可能性。MISRA C++:2008無疑是培養(yǎng)這樣良好習慣的最佳手冊。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();