2009年2月16日 星期一

c - Assert

有些時候,您預期程式中應該會處於何種狀態,例如某些情況下某個值必然是多少,這稱之為一種斷言(Assertion),斷言有兩種情況:成立或不成立。當預期結果與實際執行相同時,斷言成立,否則斷言失敗。

void assert (int expression);
expression如果為true,則什麼事都不會發生,如果為false,則會發生則會在stderr寫出錯誤訊息,且程序會立刻跳出

main.c

/* assert example */
#include <stdio.h>
#include <assert.h>

int main ()
{
FILE * datafile;
datafile=fopen ("file.dat","r");
assert (datafile);

fclose (datafile);

return 0;
}


另外, 若在程式執行前, 有定義NDEBUG的話, 就不會執行assert
在linux下就用以去指令去編譯
$ gcc main.c -DNDEBUG

錯誤訊息的格式會是像下面這樣
Assertion failed: expression, file filename, line line number

參考資料:
斷言(Assertion)
assert
assert - C++ Reference

沒有留言: