當前位置:編程學習大全網 - 編程語言 - 在c++中什麽叫斷言?

在c++中什麽叫斷言?

斷言assert是壹個宏,該宏在<assert>中,,當使用assert時候,給他個參數,即壹個判讀為真的表達式。預處理器產生測試該斷言的代碼,如果斷言不為真,則發出壹個錯誤信息告訴斷言是什麽以及它失敗壹會,程序會終止。

我們壹般可以用在判斷某件操作是否成功上。

摘錄林銳博士高質量編程壹書中相關內容。

~~~~~~~~~~~~~~~~~~~~~~~~

程序壹般分為Debug版本和Release版本,Debug版本用於內部調試,Release版本發行給用戶使用。

斷言assert是僅在Debug版本起作用的宏,它用於檢查“不應該”發生的情況。以下是壹個內存復制程序,在運行過程中,如果assert的參數為假,那麽程序就會中止(壹般地還會出現提示對話,說明在什麽地方引發了assert)。

//復制不重疊的內存塊

void memcpy(void *pvTo, void *pvFrom, size_t size)

{

void *pbTo = (byte *) pvTo;

void *pbFrom = (byte *) pvFrom;

assert( pvTo != NULL && pvFrom != NULL );

while(size - - > 0 )

*pbTo + + = *pbFrom + + ;

return (pvTo);

}

assert不是壹個倉促拼湊起來的宏,為了不在程序的Debug版本和Release版本引起差別,assert不應該產生任何副作用。所以assert不是函數,而是宏。程序員可以把assert看成壹個在任何系統狀態下都可以安全使用的無害測試手段。

以下是使用斷言的幾個原則:

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

2)使用斷言對函數的參數進行確認。

3)在編寫函數時,要進行反復的考查,並且自問:“我打算做哪些假定?”壹旦確定了的假定,就要使用斷言對假定進行檢查。

4)壹般教科書都鼓勵程序員們進行防錯性的程序設計,但要記住這種編程風格會隱瞞錯誤。當進行防錯性編程時,如果“不可能發生”的事情的確發生了,則要使用斷言進行報警。

  • 上一篇:八年級上冊數學教案3篇
  • 下一篇:有關計算機方面的演講稿!
  • copyright 2024編程學習大全網