Assert:斷言
assert宏的原型定義在<assert.h>中,其作用是如果它的條件返回錯誤,則終止程序執(zhí)行,原型定義:
#include <assert.h>
void assert( int expression );
assert的作用是現(xiàn)計算表達式 expression ,如果其值為假(即為0),那么它先向stderr打印一條出錯信息,然后通過調(diào)用 abort 來終止程序運行
也就類似于斷斷點的功能。在遇到滿足我們的斷言條件的時候會中斷程序,這樣我們就可以很方便的找到我們需要改進處理的地方,斷言操作的作用也就得到了很明顯的體現(xiàn),使用斷言能創(chuàng)建更加穩(wěn)定,品質(zhì)更好且不宜于出錯的代碼。
但是assert好用也是相對的,頻繁的調(diào)用會極大的影響程序的性能,增加額外的開銷。在調(diào)試結(jié)束后禁用。
在使用時:
1.每個assert只檢驗一個條件,因為同時檢驗多個條件時,如果斷言失敗,無法直觀的判斷是哪個條件失敗
2.assert和后面的語句應(yīng)空一行,以形成邏輯和視覺上的一致感
3.不能使用改變環(huán)境的語句,因為assert只在DEBUG個生效,如果這么做,會使用程序在真正運行時遇到問題
4.大多數(shù)情況下,assert不能代替條件過濾
實例:
const audioSource = this.getComponent(AudioSource)!;
assert(audioSource);
標簽: