2018-10-26

assert 動(dòng)態(tài)斷言

    #include <assert.h>
    void assert(int expression)

assert的原型定義在 <assert.h>中,其作用是如果它的條件返回錯(cuò)誤幸逆,則終止程序執(zhí)行棍辕。

  • C++ assert()函數(shù)的作用是先計(jì)算表達(dá)式expression, 如果其值為假(即為0),那么它先向stderr打印一條出錯(cuò)信息还绘,然后通過調(diào)用abort來終止程序運(yùn)行楚昭。
  • assert(fin!=NULL && fout!=NULL); 表示在debug模式下,當(dāng)fin或者fout其中一個(gè)為空時(shí)拍顷,程序就會(huì)被中斷并退出抚太。
  • 頻繁調(diào)用其會(huì)增加額外開銷,影響程序性能;在調(diào)試結(jié)束后尿贫,可在包含#include <assert.h>的語(yǔ)句之前插入#define NDEBUG來禁用assert調(diào)用电媳。(不過只有assert只在debug版本才能生效,發(fā)行版本都是release版庆亡。)

靜態(tài)斷言 static_assert

現(xiàn)行許多編譯器不支持匾乓,略過。

斷言用法總結(jié)與注意事項(xiàng):

  1. 在函數(shù)開始處校檢傳入?yún)?shù)的合法性
assert(nSize >= 0);
  1. 每個(gè)assert只校檢一個(gè)條件又谋,因?yàn)橥瑫r(shí)校檢多個(gè)條件時(shí)拼缝,如果斷言失敗,無法直觀判斷是哪個(gè)條件失斅Ц:
assert(nSize >= 0);
assert(nSize <= MaxSize);
  1. 不能使用改變環(huán)境的語(yǔ)句珍促,因?yàn)閍ssert只在DEBUG中生效,如果這么做剩愧,會(huì)使程序真正運(yùn)行時(shí)遇到問題:
    錯(cuò)誤:
    assert(i++ < 100);
    正確:
    assert(i < 100);
    i++;
  1. assert和后面的語(yǔ)句應(yīng)空一行猪叙,力求規(guī)范
  2. 注意,assert有時(shí)候并不能替代條件過濾仁卷。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末穴翩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锦积,更是在濱河造成了極大的恐慌芒帕,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丰介,死亡現(xiàn)場(chǎng)離奇詭異背蟆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哮幢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門带膀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人橙垢,你說我怎么就攤上這事垛叨。” “怎么了柜某?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵嗽元,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我喂击,道長(zhǎng)剂癌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任翰绊,我火速辦了婚禮珍手,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辞做。我一直安慰自己琳要,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布秤茅。 她就那樣靜靜地躺著稚补,像睡著了一般。 火紅的嫁衣襯著肌膚如雪框喳。 梳的紋絲不亂的頭發(fā)上课幕,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音五垮,去河邊找鬼乍惊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛放仗,可吹牛的內(nèi)容都是我干的润绎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诞挨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼莉撇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惶傻,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤棍郎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后银室,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涂佃,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年蜈敢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辜荠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扶认,死狀恐怖侨拦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辐宾,我是刑警寧澤狱从,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站叠纹,受9級(jí)特大地震影響季研,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜誉察,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一与涡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦驼卖、人聲如沸氨肌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怎囚。三九已至,卻和暖如春桥胞,著一層夾襖步出監(jiān)牢的瞬間恳守,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工贩虾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留催烘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓缎罢,卻偏偏與公主長(zhǎng)得像伊群,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屁使,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容