C語言中assert的用法講解
assert是指編寫代碼時做出一些假設,斷言就是用於在代碼中捕捉這些假設,可以將斷言看作是異常處理的一種高級形式。下面是小編為大家整理的C語言assert的用法講解,歡迎參考~
assert宏的原型定義在中,其作用是如果它的條件返回錯誤,則終止程序執行,原型定義:
#include
void assert( int expression );
assert的作用是現計算表達式 expression ,如果其值為假(即為0),那麼它先向stderr打印一條出錯信息,
然後通過調用 abort 來終止程序運行。
請看下面的程序清單badptr.c:
複製代碼 代碼如下:
#include
#include
#include
int main( void )
{
FILE *fp;
fp = fopen( "", "w" );//以可寫的方式打開一個文件,如果不存在就創建一個同名文件
assert( fp ); //所以這裏不會出錯
fclose( fp );
fp = fopen( "", "r" );//以只讀的方式打開一個文件,如果不存在就打開文件失敗
assert( fp ); //所以這裏出錯
fclose( fp ); //程序永遠都執行不到這裏來
return 0;
}
宏名: assert
功 能: 測試一個條件並可能使程序終止
用 法: void assert(int test);
程序例:
複製代碼 代碼如下:
#include
#include
#include
struct ITEM {
int key;
int value;
};
/* add item to list, make sure list is not null */
void additem(struct ITEM *itemptr) {
assert(itemptr != NULL);
/* add item to list */
}
int main(void)
{
additem(NULL);
return 0;
}
assert() 宏用法
注意:assert是宏,而不是函數。在C的`assert.h頭文件中。
assert宏的原型定義在中,其作用是如果它的條件返回錯誤,則終止程序執行,原型定義:
複製代碼 代碼如下:
#include
void assert( int expression );
assert的作用是先計算表達式expression,如果其值為假(即為0),那麼它先向標準錯誤流stderr打印一條出錯信息,然後通過調用abort來終止程序運行;否則,assert()無任何作用。宏assert()一般用於確認程序的正常操作,其中表達式構造無錯時才為真值。完成調試後,不必從源代碼中刪除assert()語句,因為宏NDEBUG有定義時,宏assert()的定義為空。
-
為什麼入門首選C語言?
C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。對於大部分程序員,C語言是學習編程的第一門語言,很少有不瞭解C的程序員。那麼為什麼入門首選C語言呢,下面小編為大家介紹一下吧!C...
-
C語言中gets()函數知識
導語:gets從標準輸入設備讀字符串函數,其可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。。下面是C語言中gets()函數知識,一起來學習下吧:gets()函數用於從緩衝區中讀取字符串,其原型如下:char*gets(cha...
-
2017計算機二級C語言上機考試技巧
引導語:在計算機二級C語言考題中要求考生把一道C語言程序考題,通過考生自己編寫的函數補充完整,共同完成考題的一項或多項任務。以下是本站小編分享給大家的2017計算機二級C語言上機考試技巧,歡迎閲讀!第一部:備考篇名將不打無準備之仗,複習備考的好壞,是能否順利通過...
-
C語言與JAVA的區別
很多人不明白C語言與C++和JAVE之間的區別,為此,為大家收集整理了下面的內容,歡迎閲讀!C語言C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語...