assert 函式用法

2021-10-23 20:23:49 字數 1210 閱讀 6625

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

#include <

assert

.h>

void

assert

(int expression )

;

assert的作用是現計算表示式 expression ,如果其值為假(即為0),那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。請看下面的程式清單badptr.c:

#include 

#include <

assert

.h>

#include

intmain

(void

)

[root@localhost error_process]# gcc badptr.c 

[root@localhost error_process]# ./a.out

a.out: badptr.c:

14: main: assertion `fp' failed.

已放棄使用assert()的缺點是,頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。在除錯結束後,可以通過在包含#include 的語句之前插入 #define ndebug 來禁用assert呼叫,示例**如下:

#include 

#define ndebug

#include <

assert

.h>

比較好的在程式中使用assert的地方:

(1)空指標檢查。例如,針對乙個函式的引數進行空指標檢查。你可以這樣使用:assert (pointer !=

null);,產生的錯誤會像這樣:assertion 『pointer != ((void *)0)』

failed。這樣,當出現空指標時,你的程式就會退出,並很好的給出錯誤資訊。

(2)檢查函式引數的值。例如,如果乙個函式只能在它的乙個引數foo為正值的時候被呼叫,你可以在函式開始時這樣寫:assert (foo >

0);,這將幫助你檢測函式的錯誤使用,這也給源**閱讀者很清晰的印象,那就是在這裡對函式的引數值有限制。

assert 函式用法

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

assert 函式用法

assert 函式用法 2007 10 17 12 15 assert巨集的原型定義在中,其作用是如果它的條件返回錯誤,則終止程式執行,原型定義 include void assert int expression assert的作用是現計算表示式 expression 如果其值為假 即為0 那麼它...

assert 函式用法

assert巨集的原型定義在assert.h中,其作用是如果它的條件返回錯誤,則終止程式執行.原型定義 assert的作用是現計算表示式 expression 如果其值為假 即為0 那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。請看下面的程式清單badptr.c ...