程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ assert()斷言

C++ assert()斷言

編輯:C++入門知識

assert是一個宏定義,原型定義在<assert.h>中:

#include <assert.h>
void assert( int expression );


其作用是:如果條件expression返回錯誤,則終止程序執行。

使用assert的缺點是,頻繁的調用會極大的影響程序的性能,增加額外的開銷。
在調試結束後,可以通過在包含#include <assert.h>的語句之前插入 #define NDEBUG 來禁用assert調用,示例代碼如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>


用法總結與注意事項:


1)在函數的入口處,使用斷言檢查參數的有效性(合法性)。
2)每個assert只檢驗一個條件,因為同時檢驗多個條件時,如果斷言失敗,無法直觀的判斷是哪個條件失敗
3)不能使用改變環境的語句,因為assert只在DEBUG個生效,如果這麼做,會使用程序在真正運行時遇到問題
錯誤: assert(i++ < 100)
這是因為如果出錯,比如在執行之前i=100,那麼這條語句就不會執行,那麼i++這條命令就沒有執行。
正確: assert(i < 100)
         i++;
           
4)assert和後面的語句應空一行,以形成邏輯和視覺上的一致感


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved