assert 斷言的用法

2021-04-22 03:53:17 字數 1202 閱讀 6438

程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用。(這個概念可能不大好理解,想想vc下,除錯時有個選項,乙個是debug,乙個是release)

assert(表示式);     的意思是:當表示式為真時,程式繼續執行,如果表達市為假,那程式就會停止執行,並提示錯誤資訊。

注意:assert是乙個巨集,只在debug版本中起作用,在release版本中,該語句是不起任何作用的。

先簡單的看乙個例子吧!

以下為乙個使用了斷言的c源程式:

#include

#include

void test(int *p)

int main(void)

編譯及執行結果:

qdieyou@qdieyou /cygdrive/e/gcc

$ gcc -o assert assert.c

qdieyou@qdieyou /cygdrive/e/gcc

$ ./assert

assertion "p != null" failed: file "assert.c", line 6

19331 [sig] assert 3288 e:/gcc/assert.exe: *** fatal error - called with threa

dlist_ix -1

hangup

程式說明:由於我們在main函式中傳了null指標值給test函式,在test函式執行到assert(p != null);發現表示式不為真,就終止了程式的執行,並提示錯誤的行數資訊。

注意:由於assert巨集只在debug版本中起作用,所以assert一般只用於內部函式對引數有效性進行檢查,如果該函式作為乙個外部介面來使用時,一般需要利用if,else語句進行防錯設計。——qdieyou

以下摘自《c高效程式設計》

【規則6-5-1】使用斷言捕捉不應該發生的非法情況。不要混淆非法情況與錯誤情況之間的區別,後者是必然存在的並且是一定要作出處理的。

【規則6-5-2】在函式的入口處,使用斷言檢查引數的有效性(合法性)。

【建議6-5-1】在編寫函式時,要進行反覆的考查,並且自問:「我打算做哪些假定?」一旦確定了的假定,就要使用斷言對假定進行檢查。

【建議6-5-2】一般教科書都鼓勵程式設計師們進行防錯設計,但要記住這種程式設計風格可能會隱瞞錯誤。當進行防錯設計時,如果「不可能發生」的事情的確發生了,則要使用斷言進行報警。

assert(斷言)用法

斷言語句是將除錯斷言插入到程式中的一種方便方法。1.用法 assert condition讓程式來測試condition,如果condition為false就會生成乙個assertionerror。相當於 if not condition raise assertionerror 2.示例 asse...

assert斷言用法

使用assert斷言是學習python乙個非常好的習慣,python assert 斷言句語格式及用法很簡單。在沒完善乙個程式之前,我們不知道程式在 會出錯,與其讓它在執行最崩潰,不如在出現錯誤條件時就崩潰,這時候就需要assert斷言的幫助。本文主要是講assert斷言的基礎知識。python a...

斷言(ASSERT 的用法

我一直以為assert僅僅是個報錯函式,事實上,它居然是個巨集,並且作用並非 報錯 在經過對其進行一定了解之後,對其作用及用法有了一定的了解,assert 的用法像是一種 契約式程式設計 在我的理解中,其表達的意思就是,程式在我的假設條件下,能夠正常良好的運作,其實就相當於乙個if語句 if 假設成...