assert巨集的原型定義在assert.h中,其作用是如果它的條件返回錯誤,則終止程式執行.
1 #include "assert.h"2
void assert( int expression );
assert的作用是現計算表示式 expression ,如果其值為假(即為0),那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。
使用assert的缺點是,頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。
在除錯結束後,可以通過在包含#include 的語句之前插入 #define ndebug 來禁用assert呼叫,示例**如下:
1 #include2#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...