官方例子
/* assert example */
#include <stdio.h> /* printf */
#include <assert.h> /* assert */
void print_number(int* myInt) {
assert (myInt!=NULL);
printf ("%d\n",*myInt);
}
int main ()
{
int a=10;
int * b = NULL;
int * c = NULL;
b=&a;
print_number (b);
print_number (c);
return 0;
}
當asset()函數括號裏的表達式爲假時,執行函數,顯示信息爲:
Assertion failed: expression, file filename, line line
number
例如在我的本地編譯器顯示信息爲:
修正之前的說法,以免誤導別人。
這個函數叫斷言函數,例如assert (myInt!=NULL);中就是斷言(認爲)myInt != NULL ,如果斷言不準確,即條件爲假,則會提示上圖紅框中的信息,並暫停在這一行,不執行後面的代碼。這是一種異常處理機制,在實際工程中應用特別廣泛,可以提高安全性:例如要保證某個條件成立時才執行某些行爲,可以在要執行的行爲前加入斷言函數,以保證安全性。
當然這在調試過程中也是很有用的。