1. 程式人生 > 其它 >java 工作流表單設計器 設計方案

java 工作流表單設計器 設計方案

目錄

零基礎 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 缺點是頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。

四.猜你喜歡

  1. C 語言 陣列下標越界和記憶體溢位區別
  2. C 語言 使用指標遍歷陣列
  3. C 語言 指標和陣列區別
  4. C 語言 指標陣列和陣列指標區別
  5. C 語言 野指標
  6. C 語言 函式值傳遞和址傳遞
  7. C 語言 函式不定長引數
  8. C 語言 函式指標
  9. C 語言 指標函式
  10. C 語言 回撥函式 callback
  11. C 語言 #pragma once
  12. C 語言 #include <> 與 #include “” 區別
  13. C 語言 const 修飾函式引數
  14. C 語言 const 和 define 區別
  15. C 語言 #運算子
  16. C 語言 ##運算子
  17. C 語言 __VA_ARGS__
  18. C 語言 ##__VA_ARGS__
  19. C 語言 函式不定長引數 ##__VA_ARGS__經典案例
  20. C 語言 va_start 巨集
  21. C 語言 va_end 巨集
  22. C 語言 va_arg 巨集
  23. C 語言 vprintf 函式
  24. C 語言 va_start / va_end / va_arg 自定義 printf 函式
  25. C 語言 main 函式
  26. C 語言 main 函式引數 main(int argc, char *argv[])
  27. C 語言 exit 函式
  28. C 語言 abort 函式
  29. C 語言 assert 函式

未經允許不得轉載:猿說程式設計 » C 語言 assert 函式

本文由部落格 - 猿說程式設計 猿說程式設計 釋出!