程式**:
#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的布林表...