有些時候,您預期程式中應該會處於何種狀態,例如某些情況下某個值必然是多少,這稱之為一種斷言(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
沒有留言:
張貼留言