色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

怎么理解Assert中的斷言語句?

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-03 14:12 ? 次閱讀

1寫在前面

有經(jīng)驗的工程師都知道,隨著軟件版本的迭代,或者需求不斷變更,我們的代碼就會變得越來越“臃腫”。

在編碼的過程中,如果沒有注重一些細(xì)節(jié),你的代碼就可能存在許多隱藏的Bug。

那么,我們?nèi)绾握页鲞@些隱藏的Bug呢?

今天就說其中的一點:Assert斷言。

2關(guān)于Assert斷言

什么是Assert斷言?

編寫代碼時,我們總是會做出一些假設(shè),斷言就是用于在代碼中捕捉這些假設(shè),可以將斷言看作是異常處理的一種高級形式。

斷言表示為一些布爾表達(dá)式,程序員相信在程序中的某個特定點該表達(dá)式值為真。

可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言,而在部署時禁用斷言。

同樣,程序投入運行后,最終用戶在遇到問題時可以重新啟用斷言。

---來自百度百科

這里的概念,可能不好理解,簡單舉一個例子來說明吧。

有這么一個數(shù)組和函數(shù):

int Array[5] = {0xA1, 0xB2, 0xC3, 0xD4, 0xE5}; int Fun(char i){ return Array[i];}

如果我們函數(shù)中不加Assert斷言語句,你覺得直接調(diào)用會這個函數(shù)會有風(fēng)險嗎?

假如這么調(diào)用:

int a; a = Fun(8);

很明顯,就這么調(diào)用,會出錯,且我們不容易發(fā)現(xiàn)錯誤在哪里。

但是,假如添加有Assert斷言語句,錯誤就能一下找出來。

3Assert斷言實際應(yīng)用

其實,Assert斷言在很多標(biāo)準(zhǔn)的代碼中,基本都有。我們還是拿STM32的代碼來說明吧。

不管是STM32標(biāo)準(zhǔn)外設(shè)庫,還是HAL、LL庫源代碼里面都有Assert斷言機制。

不知道大家有沒有注意過assert_param函數(shù)?


1.拿STM32最常見的GPIO初始化函數(shù)為例

A.標(biāo)準(zhǔn)外設(shè)庫GPIO初始化:

B.HAL庫GPIO初始化:

相信大家都看到過STM32庫中的參數(shù)斷言語句,他的作用就是用于檢查函數(shù)傳入?yún)?shù)是否正確。

2.STM32參數(shù)斷言使能

STM32的assert_param參數(shù)斷言函數(shù)是沒有使能的,如下:

#define assert_param(expr) ((void)0)

也就是assert_param不起作用。

如果需要使用,就需要對其使能才行。

A.標(biāo)準(zhǔn)外設(shè)庫

B.HAL庫

道理一樣,使能ASSERT,可以手動:

#define USE_FULL_ASSERT 1U

也可以通過STM32CubeMX配置:

3.代碼大小

添加Assert斷言之后,代碼量肯定要增加,比如:

不使能assert_param代碼量:

Code=5350 RO-data=360 RW-data=16 ZI-data=1152

使能assert_param:

Code=8300 RO-data=362 RW-data=16 ZI-data=1152

4.斷言失敗處理

斷言失敗,可根據(jù)實際項目需求,做出一定處理。比如:打印錯誤信息,存儲錯誤日志等。

本文就講到這里,方法教給大家,需要自己理解并消化其中內(nèi)容。

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

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70347
  • 異常處理
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7369
  • 斷言
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    6763
  • ASSERT
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7458
收藏 1人收藏

    評論

    相關(guān)推薦
    熱點推薦

    詳解TIA Portal SCL編程語言中的IF語句

    IF 語句是編程中最基本和最重要的控制結(jié)構(gòu)之一,它的主要作用是根據(jù)條件決定程序的執(zhí)行路徑,IF 語句是編程實現(xiàn)邏輯判斷和決策的基礎(chǔ)。
    的頭像 發(fā)表于 05-24 15:01 ?430次閱讀
    詳解TIA Portal SCL編程語言中的IF<b class='flag-5'>語句</b>

    SVA斷言的用法教程

    SVA是System Verilog Assertion的縮寫,即用SV語言來描述斷言斷言是對設(shè)計的屬性的描述,用以檢查設(shè)計是否按照預(yù)期執(zhí)行。
    的頭像 發(fā)表于 05-15 11:39 ?383次閱讀
    SVA<b class='flag-5'>斷言</b>的用法教程

    深入理解C語言:C語言循環(huán)控制

    在C語言編程,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無限循環(huán),C語言提供了多種循環(huán)控制語句,如break、continue和goto,用于
    的頭像 發(fā)表于 04-29 18:49 ?947次閱讀
    深入<b class='flag-5'>理解</b>C語言:C語言循環(huán)控制

    FS26和S32K3可以正常喚醒,當(dāng)添加與SJA1110的通信時,喚醒過程會卡在斷言錯誤處,為什么?

    FS26 和 S32K3 可以正常喚醒,但當(dāng)添加與 SJA1110 的通信時,喚醒過程會卡在斷言錯誤處: "GMAC_DEV_ASSERT((Bd-&gt;Des3
    發(fā)表于 04-14 08:02

    使用rt_free釋放內(nèi)存時觸發(fā)了斷言怎么解決?

    代碼從循環(huán)改成回調(diào), 釋放就斷言了 內(nèi)存使用沒有問題, 里面的內(nèi)容都好好的, 只有釋放錯誤 這是斷言內(nèi)容, 這是什么意思
    發(fā)表于 03-20 07:21

    如何理解芯片設(shè)計的IP

    本文主要介紹如何理解芯片設(shè)計的IP 在芯片設(shè)計,IP(知識產(chǎn)權(quán)核心,Intellectual Property Core)是指在芯片設(shè)計采用的、已經(jīng)開發(fā)好的功能模塊、設(shè)計或技術(shù),
    的頭像 發(fā)表于 02-08 10:43 ?858次閱讀

    深入理解C語言:循環(huán)語句的應(yīng)用與優(yōu)化技巧

    在程序設(shè)計,我們常常需要重復(fù)執(zhí)行某一段代碼。為了提高效率和簡化代碼,循環(huán)語句應(yīng)運而生。C語言作為一門經(jīng)典的編程語言,提供了多種循環(huán)控制結(jié)構(gòu),幫助程序員高效地實現(xiàn)重復(fù)操作。掌握循環(huán)語句的使用,不僅
    的頭像 發(fā)表于 12-07 01:11 ?556次閱讀
    深入<b class='flag-5'>理解</b>C語言:循環(huán)<b class='flag-5'>語句</b>的應(yīng)用與優(yōu)化技巧

    請問ADS131A04指標(biāo)的Normalized SNR如何理解

    在ADS131A04手冊Normalized SNR在-20dBFS性能最好, 隨著輸入信號增高反而變差,與通常認(rèn)為的輸入信號越高信噪比越高不同, 按圖中理解,隨著信號達(dá)到滿量程0dBFS,噪聲比信號增長的更快? 請問這樣理解
    發(fā)表于 12-05 06:43

    技術(shù)干貨驛站 ▏深入理解C語言:掌握C語言條件判斷,從if到switch的應(yīng)用

    在編程,條件判斷語句是控制程序流程的核心元素之一。它們使得程序能夠根據(jù)不同的輸入和狀態(tài),做出相應(yīng)的決策。特別是在C語言中,條件判斷語句的使用極為廣泛,涵蓋了從簡單的if語句到更復(fù)雜的
    的頭像 發(fā)表于 11-09 01:10 ?813次閱讀
    技術(shù)干貨驛站 ▏深入<b class='flag-5'>理解</b>C語言:掌握C語言條件判斷,從if到switch的應(yīng)用

    LTspice的編程語句應(yīng)該怎么寫?

    有關(guān)LTspice電路仿真軟件的使用,應(yīng)該怎么編寫一個變壓器的語句,尤其是多路輸出的,并且這個軟件是否支持多路浮動電源輸出,就像反激式開關(guān)電源那樣副邊多路浮地? 有關(guān)LTspice的軟件使用有什么資料推薦,重點是關(guān)于編程語句編寫的,就像上面那樣兩個電感的耦合關(guān)系那樣實現(xiàn)變
    發(fā)表于 10-11 19:19

    TLK1101E的los assert具體什么意思?

    TLK1101E第5引腳LOSL的功能描述是adjusts the LOS assert and de-assert levels。我有兩個問題:1、los assert具體什么意思?2、如何控制
    發(fā)表于 09-20 14:58

    嵌入式C編程常用的異常錯誤處理

    嵌入式C編程,異常錯誤處理是確保系統(tǒng)穩(wěn)定性和可靠性的重要部分。以下是一些常見的異常錯誤處理方法及其詳細(xì)說明和示例: 1. 斷言 (Assertions) 斷言用于在開發(fā)階段捕獲程序
    發(fā)表于 08-06 14:32

    LWIP多線程強烈建議開啟LWIP_ASSERT_CORE_LOCKED宏,這個在RTT里面要怎么實現(xiàn)?

    LWIP多線程強烈建議開啟LWIP_ASSERT_CORE_LOCKED宏,這個在RTT里面要怎么實現(xiàn),之前參考網(wǎng)上代碼,這樣寫,壓力測試下有概率斷言失敗 extern sys_mutex_t
    發(fā)表于 07-25 06:27

    如何限制IPD語句中的最大字節(jié)數(shù)?

    大多數(shù)情況下,我在 1 個 IPD 獲得了 1452 字節(jié)的數(shù)據(jù)包大小,然后有很多這樣的語句。 有時,(我不知道在什么情況下),我得到 5092 字節(jié)長的 IPD,這對于我的內(nèi)部緩沖區(qū)來說太大了。 如何設(shè)置修復(fù)限制?
    發(fā)表于 07-17 06:06

    如何理解機器學(xué)習(xí)的訓(xùn)練集、驗證集和測試集

    理解機器學(xué)習(xí)的訓(xùn)練集、驗證集和測試集,是掌握機器學(xué)習(xí)核心概念和流程的重要一步。這三者不僅構(gòu)成了模型學(xué)習(xí)與評估的基礎(chǔ)框架,還直接關(guān)系到模型性能的可靠性和泛化能力。以下是一篇深入探討這三者概念、作用、選擇方法及影響的文章。
    的頭像 發(fā)表于 07-10 15:45 ?6539次閱讀
    主站蜘蛛池模板: 国产亚洲视频在线播放香蕉 | 沈芯语麻豆0076 视频 | 最近日本免费观看MV免费 | 亚洲欧美自拍明星换脸 | 色久久久综合88一本道 | 亚洲欧洲日韩国产一区二区三区 | 国产69精品久久久久人妻刘玥 | 久久久大香菇 | 日韩美女爱爱 | 日本又黄又爽又色又刺激的视频 | 一区在线观看在线 | 少妇一夜未归暴露妓女身份 | 久久黄色精品视频 | 大地影院日本韩国电影免费观看 | 亚洲欧美偷拍视频一区 | 99免费在线观看视频 | 免费看b站| 人妻少妇久久久久久97人妻 | 免费在线观看国产 | CHINESE老阿姨免费视频 | 亚洲AV无码乱码国产精品品麻豆 | 熟妇无码乱子成人精品 | 亚洲中文久久精品AV无码 | 99在线视频免费观看视频 | 亚洲精品成人a | 激情内射亚州一区二区三区爱妻 | 国产精品欧美久久久久天天影视 | 青青久 | 欧美乱码伦视频免费66网 | 在线观看日本免费 | 伊人香蕉在线播放视频免费 | 69国产精品成人无码视频 | 亚洲欧美视频在线 | 天天综合亚洲综合网站 | 欧美激情社区 | 在线 日韩 欧美 国产 社区 | 97人视频国产在线观看 | 无码国产成人777爽死 | 国产精品亚洲精品久久品 | 可以看的黄页的网站 | 超碰caoporon最新视频 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品