java 工作流表單設計器 設計方案
阿新 • • 發佈:2021-11-03
目錄
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.assert 函式簡介
對於斷言,相信大家都不陌生,大多數程式語言也都有斷言這一特性。簡單地講,斷言就是對某種假設條件進行檢查。assert 巨集原型定義:
//需要包含標頭檔案 <assert.h> #include <assert.h> /* 描述:如果它的條件返回錯誤,則終止程式執行 引數: expression : 條件判斷或者表示式 */ void assert( int expression );
assert 將通過檢查表示式 expression 的值來決定是否需要終止執行程式。也就是說,如果表示式 expression 的值為假(即為 0),那麼它將首先向標準錯誤流 stderr 列印一條出錯資訊,然後再通過呼叫 abort 函式終止程式執行;否則,assert 無任何作用。
二.assert 函式使用
/******************************************************************************************/ //@Author:猿說程式設計 //@Blog(個人部落格地址): www.codersrc.com //@File:C語言教程 - C語言 assert 函式 //@Time:2021/07/18 07:30 //@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! /******************************************************************************************/ #include <stdio.h> #include <assert.h> #include <stdlib.h> int main( void ) { FILE *fp; fp = fopen( "456.txt", "w" );//以可寫的方式開啟一個檔案,如果不存在就建立一個同名檔案 assert( fp ); //所以這裡不會出錯 fclose( fp ); fp = fopen( "123.txt", "r" );//以只讀的方式開啟一個檔案,如果不存在就開啟檔案失敗 assert( fp ); //所以這裡出錯 fclose( fp ); //程式永遠都執行不到這裡來 return 0; }
預設情況下,assert 巨集只有在 Debug 版本(內部除錯版本)中才能夠起作用,而在 Release 版本(發行版本)中將被忽略。
三.assert 函式用法總結與注意事項
1.使用 assert 在函式開始處檢驗傳入引數的合法性
/******************************************************************************************/ //@Author:猿說程式設計 //@Blog(個人部落格地址): www.codersrc.com //@File:C語言教程 - C語言 assert 函式 //@Time:2021/07/18 07:30 //@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! /******************************************************************************************/ int resetBufferSize(int nNewSize) { //功能:改變緩衝區大小, //引數:nNewSize 緩衝區新長度 //返回值:緩衝區當前長度 //說明:保持原資訊內容不變 nNewSize<=0表示清除緩衝區 assert(nNewSize >= 0); assert(nNewSize <= MAX_BUFFER_SIZE); ... }
2.每個 assert 只檢驗一個條件,因為同時檢驗多個條件時,如果斷言失敗,無法直觀的判斷是哪個條件失敗
/******************************************************************************************/
//@Author:猿說程式設計
//@Blog(個人部落格地址): www.codersrc.com
//@File:C語言教程 - C語言 assert 函式
//@Time:2021/07/18 07:30
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/
//錯誤寫法
assert(a>=0 && b<=0 && c>0);
//正確寫法
assert(a>=0);
assert(b<=0);
assert(c>0);
3. assert 缺點是頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。
四.猜你喜歡
- C 語言 陣列下標越界和記憶體溢位區別
- C 語言 使用指標遍歷陣列
- C 語言 指標和陣列區別
- C 語言 指標陣列和陣列指標區別
- C 語言 野指標
- C 語言 函式值傳遞和址傳遞
- C 語言 函式不定長引數
- C 語言 函式指標
- C 語言 指標函式
- C 語言 回撥函式 callback
- C 語言 #pragma once
- C 語言 #include <> 與 #include “” 區別
- C 語言 const 修飾函式引數
- C 語言 const 和 define 區別
- C 語言 #運算子
- C 語言 ##運算子
- C 語言 __VA_ARGS__
- C 語言 ##__VA_ARGS__
- C 語言 函式不定長引數 ##__VA_ARGS__經典案例
- C 語言 va_start 巨集
- C 語言 va_end 巨集
- C 語言 va_arg 巨集
- C 語言 vprintf 函式
- C 語言 va_start / va_end / va_arg 自定義 printf 函式
- C 語言 main 函式
- C 語言 main 函式引數 main(int argc, char *argv[])
- C 語言 exit 函式
- C 語言 abort 函式
- C 語言 assert 函式
未經允許不得轉載:猿說程式設計 » C 語言 assert 函式
本文由部落格 - 猿說程式設計 猿說程式設計 釋出!