assert斷言的用處

2021-08-02 12:28:32 字數 1221 閱讀 7892

assert巨集的原型定義在中,其作用是如果它的條件返回錯誤(為假),則終止程式執行.

assert本質上是乙個巨集,而不是乙個函式

原型:

#include

void assert( int expression );

它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。

assert()的缺點是,頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。

在除錯結束後,可以通過在包含#include 的語句之前插入 #define ndebug來禁用assert呼叫

作用:1.在函式開始處檢驗傳入引數的合法性

2.每個assert只檢驗乙個條件,因為同時檢驗多個條件時,難以判斷問題位置

3.不能使用改變環境的語句,因為assert只在debug個生效,如果這麼做,會使用程式在真正執行時遇到問題,如變數值的改變;

4.assert和後面的語句應空一行,以形成邏輯和視覺上的一致感。

5.有的地方,assert不能代替條件過濾。

assert是用來避免顯而易見的錯誤的,而不是處理異常的。

錯誤和異常是不一樣的,錯誤是不應該出現的,異常是不可避免的。c語言異常可以通過條件判斷來處理。

乙個非常簡單的使用assert的規律就是,在方法或者函式的最開始使用.

如果在方法的中間使用則需要慎重考慮是否是應該的,方法的最開始還沒開始乙個功能過程,

在乙個功能過程執行中出現的問題幾乎都是異常。

示例:

#include

//#define ndebug

#include

using namespace std;

template

double devide(t a,t b)

int main()

結果:

assertion failed
會指明**位置

斷言assert總結

0.python的assert是用來檢查乙個條件,如果它為真,就不做任何事。如果它為假,則會丟擲asserterror並且包含錯誤資訊。assert語句是一種插入除錯斷點到程式的一種便捷的方式。1.使用斷言可以建立更穩定,品質更好且不易於出錯的 當需要在乙個值為false時中斷當前操作的話,可以使用...

assert(斷言)用法

斷言語句是將除錯斷言插入到程式中的一種方便方法。1.用法 assert condition讓程式來測試condition,如果condition為false就會生成乙個assertionerror。相當於 if not condition raise assertionerror 2.示例 asse...

斷言(assert) 學習

在我學習程式設計時,我一直認為斷言 assert 是個報錯函式,事實上,它居然是個巨集,並且作用並非 報錯 在經過對其進行一定了解之後,對其作用及用法有了一定的了解,斷言assert是定義在assert.h中的 巨集 只在debug版本起作用,而在release版本不起作用。用法 assert 表示...