自己編寫ASSERT 巨集(對除錯程式很有幫助)

2021-06-26 19:09:34 字數 829 閱讀 5962

程式**:

#include using namespace std;

#define debug

#ifndef debug

#define assert(x)

#else

#define assert(x) \

if(!(x))

#endif

int main()

{ int x = 999;

cout<<"第一次執行assert():"<說明:

1、assert()巨集使用了__line__和__file__巨集來確定錯誤**的行數以及錯誤**所在的檔案。

2、行結尾處的正斜槓「\」將本行語句與後面的連為一句

3、#x : #運算子將位於其後的任意字元用引號引起來。這裡就是"x"。

4、debug為除錯開關。一般來說當開啟除錯(debug)是assert()才起作用,而程式檢查完畢,確信沒有錯誤後便會關閉debug,這樣assert()便被刪除了。

因此,以上程式首先定義了乙個debug,一般來說這都是由編譯器來完成的,通過編譯器的debug選項,會開啟或者關閉debug,它的作用就是定義或者取消定義乙個debug;接著,判斷debug是否被定義,假如沒定義,那麼定義巨集函式assert(x),這個巨集函式沒有任何功能,否則的話則定義乙個丟擲異常的巨集函式。

5、採用大寫方法以區分系統預設的assert()。有的編譯器提供了assert()巨集,被翻譯為斷言,它的作用是當assert()的引數為真時,返回真,假如引數值為假,那麼它將執行某種操作,有的編譯器在assert()函式失敗時中止程式,其他編譯器則會丟擲乙個異常,比如說輸出一條錯誤資訊。

assert 巨集用法

assert巨集的原型定義在中,其作用是如果它的條件返回錯誤,則終止程式執行,原型定義 include assert.h void assert intexpression assert的作用是現計算表示式 expression 如果其值為假 即為0 那麼它先向stderr列印一條出錯資訊,然後通過...

assert 斷言函式 巨集

編寫 時,我們總是會做出一些假設,斷言就是用於在 中捕捉這些假設,可以將斷言看作是異常處理的一種高階形式。斷言表示為一些布林表示式,程式設計師相信在程式中的某個特定點該表示式值為真。可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言,而在部署時禁用斷言。同樣,程式投入執行後,終端使用者在遇到...

assert巨集的使用

assert巨集是確保在assert語句位置的預期條件為true的工具。如條件不符,程式會顯示錯誤資訊並退出。為了使用assert巨集,首先要在程式中包含assert的定義,這是用以下語句實現的 include 為了使用assert,請在需要強制斷言的位置新增以下 並新增你希望求值為true的布林表...