assert 的使用方法及示例

2021-07-15 10:06:04 字數 1029 閱讀 5124

assert巨集的原型定義在assert.h中,其作用是如果它的條件返回錯誤,則終止程式執行. 

1 #include "

assert.h"2

void assert( int expression );

assert的作用是現計算表示式 expression ,如果其值為假(即為0),那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。

使用assert的缺點是,頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。 

在除錯結束後,可以通過在包含#include 的語句之前插入 #define ndebug 來禁用assert呼叫,示例**如下: 

1 #include 

2#define ndebug

3 #include

值得注意的是:每個assert只檢驗乙個條件,因為同時檢驗多個條件時,如果斷言失敗,無法直觀的判斷是哪個條件失敗 

不好:

assert(noffset>=0 && noffset+nsize<=m_ninfomationsize); 

好:  

assert(noffset >= 0);

assert(noffset+nsize <= m_ninfomationsize);

不能使用改變環境的語句,因為assert只在debug個生效,如果這麼做,會使用程式在真正執行時遇到問題 

錯誤:

assert(i++ < 100);

這是因為如果出錯,比如在執行之前i=100,那麼這條語句就不會執行,那麼i++這條命令就沒有執行。 

正確:

assert(i < 100);

i++;

#include #include #include int main(void)

assert的使用方法以及extern的使用

1.assert 巨集的原型定義在,其作用是如果他的條件返回錯誤,則終止程式執行。2.extern 的使用 首先,作為extern是c c 語言中表明函式和全域性變數作用範圍 可見性 的關鍵字,該關鍵字告訴編譯器,其宣告的函式和變數可以在本模組或其它模組中使用。通常,在模組的標頭檔案中對本模組提供給...

Python yield使用方法示例

2.constructor 怎麼把函式變成constructor?在函式體裡有yield就行了!複製 如下 def gen print enter yield 1 print next yield 2 print next again for i in gen print i 各位!python看到...

Python yield使用方法示例

1.iterator 疊代器最簡單例子應該是陣列下標了,且看下面的c 複製 如下 int array 10 for int i 0 i 10 i printf d array i 疊代器工作在乙個容器裡 array 10 它按一定順序 i 從容器裡取出值 array i 並進行操作 printf d...