開發紀錄
 

assert()

 使用說明
 
 當自己寫的函式庫要提供他人使用時,適當的利用維護敘述,可以建立安全的使用
 介面,避免他人因為使用不當,而造成不可預期的後果。 
 C 語言自己的維護函式- assert() ,使用方法如下:
 assert(number < 1000);
 
 當程式執行到該行時,若 number < 1000 則程式可以繼續執行;若
 number >= 1000 ,則會秀出維護錯誤訊息的字串,並結束程式。
 維護字串包含有:判斷式子、程式檔名及該行的行號。
 
#include <stdio.h>
#include <assert.h>
 
int main(void){
    int number = 1000;
    assert(number < 1000);
    return 0;
}
而執行時的錯誤訊息如下 : 
a.out: asserttest.c:6: main: Assertion `number < 1000' failed.
Aborted (core dumped)
可以很清楚的知道程式執行時在第六行遇到錯誤,而錯誤是在哪邊
 參考資料 : assert() 用法
 
assert() 也可以自行定義錯誤提示的訊息像是 :
assert( (number < 1000) && "ERROR!!!!! number over 1000");
  • [條件]      [發生錯誤時的訊息]
執行的結果就會像是
a.out: asserttest.c:6: main: Assertion `(number < 1000) && "ERROR!!!!! number over 1000"' failed.
Aborted (core dumped)
 
  • 與if的差別
assert有兩個用途
1. 自訂提示訊息                                     assert(條件 && "說明文字");
2. 用來提示程式執行到哪裡                 assert("here!!"); (p.s.後來測試過後要這樣才會過,
                                                               執行 時不會印東西出來,但是用printf()好像就能解決了)
                
assert目的是用來判斷程式執行時的邏輯像是
assert(number < 1000); 這裡是說明在程式的這裡number這個變數的質不能小於1000
 
if是程式邏輯的一部分。
  • if(number < 1000)指的是如果number < 1000,程式該做出什麼樣的動作
 
另外如果不習慣assert()的表示法的話也可以另外用巨集將其包裝起來像是:
#include <stdio.h>
#include <assert.h>