ASSERT VALID和ASSERT巨集分析

2021-06-19 12:14:30 字數 1090 閱讀 1563

這個巨集都是mfc的除錯巨集.

assert_valid巨集用來在執行時檢查乙個物件的內部合法性,比如說現在有乙個學生物件,我們知道每個學生的年齡一定大於零,若年齡小於零,則該學生物件肯定有問題。

事實上,assert_valid巨集就是轉化為物件的成員函式assertvalid()的呼叫,只是這種方法更安全。它的引數是乙個物件指標,通過這個指標來呼叫它的assertvalid()成員函式。

與此相配套,每當我們建立從cobject類繼承而來的乙個新的類時,我們可以過載該成員函式,以執行特定的合法性檢查

assert_valid強制呼叫引數物件(必須是cobject或cobject*)的assertvalid函式,該函式實現物件的內部一致性檢查,當你建立乙個可重用類時,應該過載這個函式(vc中預設已經過載了該函式),你可以在該函式中進行必要的檢查工作. 

assert巨集用於確保引數內的表示式正確,如果表示式為false,則會顯示乙個訊息對話方塊,其中有原始檔的名字和當前行號,使用者可以選擇中斷程式或進行除錯.這個巨集通常用於校驗引數和返回值. 

以上兩個巨集均只在debug版本中有效,與assert相對應的是verify.verify巨集在debug版本中與assert相同,在release版本中僅執行引數表示式,不進行校驗.

assert 和 assert_valid 

都是用於debug的,當括號中的表示式為false時,會彈出對話方塊通知, 

你可以自己加上一句assert(false),看看執行時有什麼東東。

assert_valid用於對c++物件或指標進行有效性判斷,如果出錯,結果和assert一樣。

注意:二者都只能在mfc工程裡用。

以下是assert_valid對應的**:

在win32環境下通過測試

#include

class cperson : public cobject

;cperson::cperson(char *pname, int nage) : m_strname(pname), m_nage(nage)

#ifdef _debug

void cperson::assertvalid() const

#endif

int main()

ASSERT VALID和ASSERT巨集分析

這個巨集都是mfc的除錯巨集.assert valid巨集用來在執行時檢查乙個物件的內部合法性,比如說現在有乙個學生物件,我們知道每個學生的年齡一定大於零,若年齡小於零,則該學生物件肯定有問題。事實上,assert valid巨集就是轉化為物件的成員函式assertvalid 的呼叫,只是這種方法更...

ASSERT VALID和ASSERT巨集分析

這個巨集都是mfc的除錯巨集.assert valid巨集用來在執行時檢查乙個物件的內部合法性,比如說現在有乙個學生物件,我們知道每個學生的年齡一定大於零,若年齡小於零,則該學生物件肯定有問題。事實上,assert valid巨集就是轉化為物件的成員函式assertvalid 的呼叫,只是這種方法更...

ASS字幕製作

name 字型名稱?fontname 字型名稱 fn冬青黑體簡體中文 w3 fnvoguesans 例 n 如何查詢字型在系統中的名稱 這個才是可以寫到 fontname 欄裡的字型名稱。fontsize 字型大小 primarycolour 主體顏色 顏色格式為aabbggrr,十六進製制,如 h...