斷言錯誤訊息
存在一個可以顯示錯誤訊息和斷言的技巧。通常,你會編寫這樣的程式碼
void f(void *p)
{
assert(p != NULL);
/* more code */
}
如果斷言失敗,則錯誤訊息類似
斷言失敗:p != NULL,檔案 main.c,第 5 行
但是,你也可以使用邏輯 AND(&&
)來提供錯誤訊息
void f(void *p)
{
assert(p != NULL && "function f: p cannot be NULL");
/* more code */
}
現在,如果斷言失敗,則會顯示錯誤訊息
斷言失敗:p != NULL &&“函式 f:p 不能為 NULL”,檔案 main.c,第 5 行
為什麼這有效的原因是字串文字總是計算為非零(true)。將 && 1
新增到布林表示式無效。因此,新增 && "error message"
也沒有任何影響,除了編譯器將顯示失敗的整個表示式。