新聞中心
本文轉(zhuǎn)載自微信公眾號(hào)「編程學(xué)習(xí)基地」,作者deroy 。轉(zhuǎn)載本文請(qǐng)聯(lián)系編程學(xué)習(xí)基地公眾號(hào)。

鼓樓ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
斷言(assert)
編寫代碼時(shí),我們總是會(huì)做出一些假設(shè),斷言就是用于在代碼中捕捉這些假設(shè)。斷言表示為一些布爾表達(dá)式,程序員相信在程序中的某個(gè)特定點(diǎn)該表達(dá)式值為真,可以在任何時(shí)候啟用和禁用斷言驗(yàn)證,因此可以在測(cè)試時(shí)啟用斷言而在部署時(shí)禁用斷言。同樣,程序投入運(yùn)行后,最終用戶在遇到問(wèn)題時(shí)可以重新啟用斷言。
簡(jiǎn)單來(lái)說(shuō)如果結(jié)果和你的預(yù)期一樣,那么OK,結(jié)果為真繼續(xù)運(yùn)行.如果結(jié)果和預(yù)期不符,那么程序會(huì)拋出一個(gè)系統(tǒng)級(jí)錯(cuò)誤(不是異常),并且終止程序運(yùn)行。
assert() 用法
assert宏的原型定義在 中,其作用是如果它的條件返回錯(cuò)誤,則終止程序執(zhí)行,原型定義:
- #include
- void assert( int expression ); //expression:布爾表達(dá)式
assert的作用是現(xiàn)計(jì)算表達(dá)式 expression ,如果其值為假(即為0),那么它先向stderr打印一條出錯(cuò)信息
然后通過(guò)調(diào)用 abort 來(lái)終止程序運(yùn)行。
示例:
- #include
- #include
- int main(void)
- {
- FILE* fp;
- fp = fopen("test.txt", "w");//以可寫的方式打開(kāi)一個(gè)文件,如果不存在就創(chuàng)建一個(gè)同名文件
- assert(fp); //所以這里不會(huì)出錯(cuò)
- fclose(fp);
- fp = fopen("noexitfile.txt", "r");//以只讀的方式打開(kāi)一個(gè)文件,如果不存在就打開(kāi)文件失敗
- assert(fp); //所以這里出錯(cuò)
- fclose(fp); //程序永遠(yuǎn)都執(zhí)行不到這里來(lái)
- return 0;
- }
運(yùn)行報(bào)錯(cuò)如下:
控制臺(tái)輸出如下:
- Assertion failed: fp, file D:\vs2019\Console\微信公眾號(hào)推送\微信公眾號(hào)推送\微信公眾號(hào)推送.cpp, line 11
工程文件使用示例:
- void resize(int num)
- {
- if(num<0)
- assert(nullptr);
- if(num >len)
- //...
- }
作者:夢(mèng)凡
網(wǎng)頁(yè)標(biāo)題:斷言(assert)有多重要,你不會(huì)不知道吧
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/dpjigpo.html


咨詢
建站咨詢
