chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

帶你走近MISRA C++:2023

北匯信息POLELINK ? 2024-04-30 08:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者 | 給你小魚干
小編 | 不吃豬頭肉

隨著汽車工業(yè)邁入數(shù)字化轉(zhuǎn)型的新紀元,軟件的安全性與可靠性已躍升為設計和開發(fā)核心環(huán)節(jié)的重中之重。MISRA C++標準的誕生與演進,精準地回應了行業(yè)發(fā)展的需求。自MISRA C++標準首次面世以來,它便被奉為汽車軟件工程師在開發(fā)實踐中的圭臬。
11b82212-0688-11ef-9118-92fbcf53809c.png

MISRA C++的發(fā)展史
MISRA C++的起源可以追溯到MISRA C標準的成功制定和廣泛應用。MISRA C是一套針對C語言的編碼規(guī)范,首次發(fā)布于1998年,它迅速成為汽車行業(yè)中軟件安全性和可靠性的標桿。(回顧MISRA C:2012介紹請見文章

帶你走近MISRA C:2012》)隨著C++在工業(yè)界的普及,尤其是在汽車電子控制系統(tǒng)中,對C++的類似規(guī)范的需求日益增長?;贛ISRA C的成功經(jīng)驗和市場需求,MISRA組織隨后發(fā)布了適用于C++03標準的編碼規(guī)范MISRA C++:2008。這是首個針對C++語言的MISRA標準,包含一系列的規(guī)則和指導原則,這些規(guī)則覆蓋了從編程實踐到代碼設計等多個方面,旨在幫助開發(fā)者編寫出更加安全和可靠的代碼。
MISRA C++:2008規(guī)范發(fā)布后,得到了業(yè)界的廣泛認可和采納。它不僅在汽車行業(yè)中得到了應用,還擴展到了航空、醫(yī)療設備和工業(yè)控制等多個領域,并對這些行業(yè)產(chǎn)生了深遠的影響。隨著C++語言標準的不斷更新和新特性的引入,MISRA C++:2008也在經(jīng)歷不斷的修訂和更新,以保持與C++標準語言的同步,并覆蓋新出現(xiàn)的語言特性。MISRA C++:2008與AUTOSAR C++14
但隨著后續(xù)新版本C++標準的發(fā)布,MISRA C++:2008并未將新的C++語言特性納入,于是AUTOSAR組織發(fā)布了AUTOSAR C++14編碼規(guī)范。
AUTOSAR C++14在制定時,大量借鑒了MISRA C++:2008的規(guī)則。MISRA C++:2008是基于C++03標準制定的,而AUTOSAR C++14則是基于更新的C++14標準。AUTOSAR C++14吸收了約91%的MISRA C++:2008規(guī)則,并對其進行了擴展和更新,引入了針對C++11/14特性的規(guī)范。

11d8b946-0688-11ef-9118-92fbcf53809c.png

MISRA C++:2023
MISRA C++:2023發(fā)布于2023年10月,這是MISRA C++的最新版本。它為使用ISO/IEC 1488217) 開發(fā)的安全關鍵型軟件的組織提供指導。MISRA C++:2023規(guī)則分類
MISRA C++:2023整合了AUTOSAR C++14編碼規(guī)范, 共179條準則。這些規(guī)則按照性質(zhì)分為兩類:Rule(規(guī)則)和Directive(指令),包含175條Rule和4條Directive。規(guī)則有三種不同類別:” Mandatory(強制)”、” Required(要求)”和“Advisory(建議)”, Mandatory類別的規(guī)則中包含5條Rule,Required規(guī)則中包含122條Rule和4條Directive,Advisory規(guī)則中包含48條Rule。
11feef76-0688-11ef-9118-92fbcf53809c.png圖1 MISRA C++:2023規(guī)則分類
122724e6-0688-11ef-9118-92fbcf53809c.png圖2 MISRA C++:2023規(guī)則類別MISRA C++:2023還引入了MISRA C++的Rule可判定性分類??膳卸ㄐ詤^(qū)分標準為是否能在任何情況下明確回答“該代碼是否遵循了這條規(guī)則?”這個問題。
123cb9fa-0688-11ef-9118-92fbcf53809c.png1257faf8-0688-11ef-9118-92fbcf53809c.png圖3 Rule的可判定性分類要注意的是,可判定性并不適用于Directive規(guī)則。接下來讓我們進一步了解MISRA C++:2023編碼規(guī)范。

1275b16a-0688-11ef-9118-92fbcf53809c.png

什么是 MISRA C++:2023 Rule 9.5.2,為什么它很重要?MISRA C++:2023 引入了Rule 9.5.2:“ for 范圍初始值設定項最多應包含一個函數(shù)調(diào)用”,以避免在基于范圍的 for 語句的 for 范圍初始值設定項創(chuàng)建臨時對象時可能發(fā)生的未定義行為。
為了理解為什么會發(fā)生這種情況,讓我們仔細看看基于 C++ 范圍的 for 循環(huán)。
什么是 C++ 中基于范圍的 for 循環(huán)?
在編程中,循環(huán)用于重復代碼塊。當我們知道要在代碼塊中循環(huán)多少次時會使用for循環(huán)。C++ 基于范圍的 for 循環(huán)是在 C++11 中引入的,作為容器迭代的簡潔表示法。傳統(tǒng)循環(huán)源自 C 語言,具有可選的循環(huán)初始化,然后是循環(huán)條件,最后是循環(huán)增量表達式。
傳統(tǒng)for循環(huán)可用于迭代容器,如下所示:

std::vector v = { "Example", "vector", "of", "strings" };

for ( auto &&i = v.begin(); i != v.end(); ++i ) {

std::cout << *i << “ “;?

}

std::cout << std::endl;?

使用基于范圍的for時,迭代器的使用是隱式的:

for ( auto &&s: v ) {

std::cout << s << “ “;?

}

對于同一循環(huán),這是一個更簡單的表示法。C++ 語言標準指出它是以下方面的縮寫:

{

auto && __range = v;

auto __begin = __range;

auto __end = v.end();

for (; __begin != __end; ++__begin) {

auto &&s = *__begin;

std::cout << s << “ “;?

}

}

但是,這種表示法存在一定的局限性。在上面的示例中, __range 是用 v 初始化的,這是一個更簡單的變量,但也可以使用一個復雜的表達式,為其創(chuàng)建多個臨時對象。

讓我們考慮使用一個函數(shù),該函數(shù)返回字符串的向量,并具有:?一個輸出用空格分隔的字符串的循環(huán),如上所述;?第二個循環(huán),打印第一個字符串的字母,用空格分隔

std::vectorcreateStrings() {

return { "Example”, "vector", "of", "strings" };

}

int main() {

for ( auto w: createStrings() ) { std::cout << w << " "; }?

std::cout << std::endl;?

for ( auto c: createStrings()[0] ) { std::cout << c << " "; }?

std::cout << std::endl;?

}

如果我們執(zhí)行此操作,第一個循環(huán)將按預期運行,但第二個循環(huán)將調(diào)用未定義的行為 。問題是 createStrings()[0] 有兩個函數(shù)調(diào)用。最里面的調(diào)用是 createStrings 的調(diào)用 ,最外面的調(diào)用是對索引運算符[ ]的調(diào)用。

未定義行為的原因是 “ createStrings ”返回的臨時對象 用作“ operator[ ]”調(diào)用的參數(shù),因此,根據(jù) C++ 的規(guī)則,臨時對象的生存期不會延長。
MISRA C++:2023 Rule 9.5.2 如何防范未定義的行為
MISRA C++:2023 Rule 9.5.2 旨在防止這種情況。MISRA C++:2023 引入了規(guī)則 9.5.2,該規(guī)則要求for范圍初始值設定項最多應包含一個函數(shù)調(diào)用。
它還建議通過在循環(huán)范圍之前的單獨聲明中執(zhí)行內(nèi)部函數(shù)調(diào)用來解決此問題。例如:

auto strings = createStrings();

for ( auto c: strings[0] ) { std::cout << c << " "; }?

現(xiàn)在,初始值設定項中只有一個函數(shù)調(diào)用,因此生存期擴展具有所需的效果,并且行為已完全定義。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)字化
    +關注

    關注

    8

    文章

    10847

    瀏覽量

    67430
  • MISRA
    +關注

    關注

    0

    文章

    22

    瀏覽量

    7459
  • 汽車
    +關注

    關注

    15

    文章

    4236

    瀏覽量

    41347
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用VectorCAST/C++的AI輔助測試功能

    從2026版本開始,VectorCAST/C++推出首批AI輔助測試功能,旨在幫助開發(fā)團隊解決單元測試過程中的兩個核心難點:
    的頭像 發(fā)表于 04-27 14:37 ?198次閱讀

    C++與lua聯(lián)合編程

    在現(xiàn)代軟件工程的龐大架構(gòu)中,純粹的 C++ 與動態(tài)腳本語言之間的關系,早已演變成一場精密的“商業(yè)分工”。C++ 扮演著提供極致性能的“底層重工業(yè)”,而 Lua 則充當著實現(xiàn)靈活業(yè)務邏輯的“輕量級
    發(fā)表于 04-19 16:27

    C++:const 的空間,常量也能占內(nèi)存?

    ] != BLACK)): return True return False c++語言5g.FsW.dgdfgsg.cnJIWWQc++語言 c++語言5g.I5y.dgdfgsg.cnJIWWQc++
    發(fā)表于 04-16 19:19

    C語言安全編碼指南:MISRA C、CERT C、CWE 與 C Secure 標準對比與Perforce QAC應用詳解

    如何編寫真正安全的C語言代碼?指南涵蓋MISRA C、CERT、CWE等國際安全編碼標準對比,以及如何借助Perforce QAC自動檢測漏洞。推薦給嵌入式/汽車/工業(yè)軟件的開發(fā)者!
    的頭像 發(fā)表于 01-26 17:38 ?1107次閱讀
    <b class='flag-5'>C</b>語言安全編碼指南:<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>、CERT <b class='flag-5'>C</b>、CWE 與 <b class='flag-5'>C</b> Secure 標準對比與Perforce QAC應用詳解

    keil實現(xiàn)cc++混合編程

    起因項目中使用到一個開源的模擬IIC的庫,封裝的比較好,但是是使用c++寫的。于是將其移植到自己的項目中,主要有以下三步操作: 在工程選項中 C/C++中去掉勾選 C99 Mode
    發(fā)表于 01-26 08:58

    汽車網(wǎng)絡安全開發(fā)語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網(wǎng)絡安全如何選編程語言?C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8種主流語言的優(yōu)劣與適用場景,以及Perforce QAC/Klocwork對MISRA、CERT等規(guī)范的
    的頭像 發(fā)表于 12-26 11:13 ?660次閱讀
    汽車網(wǎng)絡安全開發(fā)語言選型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    C語言與C++的區(qū)別及聯(lián)系

    C語言和C++到底是什么關系? 首先C++C語言本來就是兩種不同的編程語言,但C++確實是對C
    發(fā)表于 12-24 07:23

    CC++之間的聯(lián)系

    1、語法兼容性: C++完全兼容C語言的語法,這意味著任何有效的C語言程序都可以直接在C++編譯器下編譯通過。 2、底層控制: C++
    發(fā)表于 12-11 06:51

    C語言和C++之間的區(qū)別是什么

    區(qū)別 1、面向?qū)ο缶幊?(OOP): C語言是一種面向過程的語言,它強調(diào)的是通過函數(shù)將任務分解為一系列步驟進行執(zhí)行。 C++C語言的基礎上擴展了面向?qū)ο蟮奶匦裕С诸?class)、封裝、繼承
    發(fā)表于 12-11 06:23

    C++程序異常的處理機制

    1、什么是異常處理? 有經(jīng)驗的朋友應該知道,在正常的CC++編程過程中難免會碰到程序不按照原本設計運行的情況。 最常見的有除法分母為零,數(shù)組越界,內(nèi)存分配失效、打開相應文件失敗等等。 一個程序
    發(fā)表于 12-02 07:12

    C/C++代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性

    ?Perforce Validate?中?QAC?項目的相對/根路徑的支持。C++?分析也得到了增強,增加了用于檢測 C++?并發(fā)問題的新檢查,并改進了實體名稱和實
    的頭像 發(fā)表于 10-13 18:11 ?741次閱讀
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性

    技能+1!如何在樹莓派上使用C++控制GPIO?

    在使用樹莓派時,你會發(fā)現(xiàn)Python和Scratch是許多任務(包括GPIO編程)中最常用的編程語言。但你知道嗎,你也可以使用C++進行GPIO編程,而且這樣做還有不少好處。借助WiringPi
    的頭像 發(fā)表于 08-06 15:33 ?4509次閱讀
    技能+1!如何在樹莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    主流的 MCU 開發(fā)語言為什么是 C 而不是 C++

    在單片機的地界兒里,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說內(nèi)存這道坎兒。您當stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?1213次閱讀
    主流的 MCU 開發(fā)語言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    Helix QAC 2025.1 重磅發(fā)布!MISRA C:2025? 100%覆蓋

    Helix QAC 2025.1新增功能 Helix QAC 2025.1實現(xiàn)了對新版MISRA C:2025?標準的 100% 覆蓋,并提供對應的合規(guī)模塊。此版本還擴展了對 CERT C
    的頭像 發(fā)表于 05-13 16:48 ?1603次閱讀
    Helix QAC 2025.1 重磅發(fā)布!<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2025? 100%覆蓋

    MISRA C:2025新標準解析:新增規(guī)則、優(yōu)化點與靜態(tài)代碼分析工具支持(Perforce QAC、Klocwork)

    MISRA C:2025?發(fā)布!新增5條規(guī)則,并對部分現(xiàn)有規(guī)則進行了擴展、重組,以進一步簡化安全關鍵型系統(tǒng)的開發(fā)流程。如何實現(xiàn)最新MISRA合規(guī)性?
    的頭像 發(fā)表于 05-08 17:58 ?3518次閱讀
    <b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2025新標準解析:新增規(guī)則、優(yōu)化點與靜態(tài)代碼分析工具支持(Perforce QAC、Klocwork)