簡介
#include <assert.h>
void assert(int expression);
/*
功能:
先計算表達式expression,如果其值為假(0),那麼它先向stderr列印一條出錯資訊,
然後通過調用abort來終止程式運作
*/
頻繁的調用會極大的影響程式的性能,增加額外的開銷。在調試結束後,可以通過在包含#include <assert.h>的語句之前插入 #define NDEBUG 來禁用assert調用,示例代碼如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>
用法
注意: assert是用來避免顯而易見的錯誤的,而不是處理異常的。錯誤和異常是不一樣的,錯誤是不應該出現的,異常是不可避免的。
一個非常簡單的使用assert的規律就是,在方法或者函數的最開始使用,如果在方法的中間使用則需要慎重考慮是否是應該的。方法的最開始還沒開始一個功能過程,在一個功能過程執行中出現的問題幾乎都是異常。
- 在函數開始處檢驗傳入參數的合法性
- 每個assert隻檢驗一個條件,因為同時檢驗多個條件時,如果斷言失敗,無法直覺的判斷是哪個條件失敗
以上隻是最基本的關于assert的介紹,但我覺得還是沒懂什麼時候應該用assert
比較具體的可以參考:斷言(assert)的用法