C語言錯誤處理

2021-10-25 05:54:37 字數 1511 閱讀 2274

#include

#include

#include

1、#include

使用assert() 函式 void assert( scalar expression);

a、引數型別為 scalar (標量) 標量代表原子型別。如 int 、char 、 等非復合型別資料。

此鏈結詳細解釋了標量和復合型別

b、assert 的引入會增加額外的檢查時間。,所以在測試時使用assert ,在程式最終完成時禁止assert 。 禁止assert 需要在 包含標頭檔案 #include < assert.h> 之前包含 #define ndebug 即可。

#define ndebug

#include

標頭檔案中的顯示如下。

c、 不要在assert 中使用有***的表示式。 只能是單純的判斷作業的語句。因為一旦採用b 中的方法導致asset 被禁用。會導致賦值或者分配空間等沒有操作。導致出錯。

d、 如果表示式值為false 或者0 ,assert 函式會向 標準錯誤流輸出錯誤資訊。並使用abort() 結束程式。

2、#include

標頭檔案 errno.h 中宣告的int 型別errno 變數儲存乙個標準錯誤碼。(errno 可能實際上是乙個巨集,可以像變數一樣使用)。 之間部落格巨集定義中有提高使用連線符生成變數名

通過檢測errno 的值來產生程式執行錯誤的訊號。

void perror(const char *s ); #include

char *strerror ( int errnum ); #include

perror () 函式會在輸出字串 s 的內容後, 輸出errno 相關的出錯資訊。

strerror() 函式會將數字解析為對應的出錯資訊。 所以可以用來輸出errno 對應的出錯訊息。

3、#include

int

setjmp

(jmp_buf env)

;void

longjmp

(jmp_buf env,

int var)

;

goto 語句是在同乙個函式內跳轉, setjmp 標頭檔案可以使乙個函式直接跳到另乙個函式。

開始使用setjmp (jmp_buf env) 用來標記跳轉的位置。 之後使用longjmp(env, var) 跳轉到使用setjmp 的位置。此時 setjmp ()的返回值是var , 如果longjmp 中var 的值為0, 則setjmp 在跳轉後執行的返回值為1。 並從此處開始重新執行**。如果沒有設定退出條件,會導致一直迴圈。

從setjmp.h 標頭檔案中擷取。

C語言錯誤處理

c語言錯誤處理 1 什麼是錯誤處理?程式錯誤是指在軟體執行中因為程式本身有錯誤而造成的功能不正常 宕機 資料丟失 非正常中斷等現象。錯誤處理程式是指軟體系統中用於處理錯誤的程式。在程式語言中,錯誤處理模型一般可以分為 返回值模型 全域性錯誤標誌模型 恢復性模型和限制性模型。2 c語言的錯誤處理 c程...

C語言 錯誤處理

目錄 一 定義 二 顯示與 errno 相關的文字訊息的函式 1.perror 函式 2.strerror 函式 舉例 三 被零除的錯誤 舉例 c 語言不提供對錯誤處理的直接支援,但是作為一種系統程式語言,它以返回值的形式允許您訪問底層資料 在發生錯誤時,大多數的 c 或 unix 函式呼叫返回 1...

C 錯誤處理

語言不提供對錯誤處理的直接支援,但是作為一種系統程式語言,它以返回值的形式允許您訪問底層資料。在發生錯誤時,大多數的 c 或 unix 函式呼叫返回 1 或 null,同時會設定乙個錯誤 errno,該錯誤 是全域性變數,表示在函式呼叫期間發生了錯誤。您可以在 errno.h 標頭檔案中找到各種各樣...