竹園論壇

標題: Assert 介紹 [打印本頁]

作者: Sylveon    時間: 2014-8-25 14:04
標題: Assert 介紹
Assert

標頭
C   : assert.h
C++ : cassert


包含的函數
巨集函數:assert ( EXP )
使用方法:EXP為一個判斷表達式,若EXP成立的話程式會繼續執行,否則程式將會中止並產生錯誤訊息。

範例程式碼
[C++] 純文本查看 復制代碼
#include<iostream>
#include<cassert>
using namespace std;

int main()
{
        int a = 18;
        int b = 18;
        
        assert( a!= b );
        
        cout<< "通過 assert 的檢查" <<endl;
        cout<< a / (a-b) <<endl;
}


執行結果


可以發現,因為a!=b這個敘述是錯誤的,於是程式就被終止,避免繼續執行下面的除法運算。通常assert會用在函數套件或是Debug時使用,用來確保通過assert時,變數有達到指定的要求。

如果要取消assert的功能,可以定義NDEBUG來關閉功能,參考如下:
[C++] 純文本查看 復制代碼
#include<iostream>

//關閉Assert 要在 include 前加才有用
#define NDEBUG
#include<cassert>



using namespace std;
int main()
{
        int a = 18;
        int b = 18;
        
        assert( a!= b );
        
        cout<< "通過 assert 的檢查" <<endl;
        cout<< a / (a-b) <<endl;
}


執行結果









歡迎光臨 竹園論壇 (http://forum.tfcis.org/) Powered by Discuz! X3.2