自己的出錯處理之 debug c

2021-06-11 16:28:21 字數 1205 閱讀 5428

在本c檔案對應的標頭檔案中直接定義巨集定義rep 即可寫到檔案中!

在這包含本應用用到的所有標頭檔案( 標頭檔案的定義要嚴格按照 debug.h 的方式定義 來防止函式定義的衝突)

#ifdef __cplusplus

extern "c"

va_start(ap, pcfmt);

//使用vsnprintf 代替vsprintf 可以避免陣列越界.

vsnprintf (acdebugbuffer,rep_debug_buffer_size ,pcfmt, ap);

va_end(ap);

now = time(0);

psttm = localtime(&now);

可以根據需要在本檔案或者標頭檔案中加上開關巨集來決定到底將訊息寫到**:   檔案 還是 標準輸出//

ifndef rep  -----------define rep  ----------#endif   這個預處理 rep 是巨集定義 只是沒有值

#ifndef rep

stream = stdout;

#else

stream = fopen(rep_log_file, "a+");

#endif

fprintf(stream, "%04d-%02d-%02d, %02d:%02d:%02d, ", psttm->tm_year + 1900, psttm->tm_mon, psttm->tm_mday, psttm->tm_hour, psttm->tm_min, psttm->tm_sec);

fprintf(stream, "%s, %s, l%d:\r\n", szfunction, szfile, iline);

fprintf(stream, "%s\r\n", acdebugbuffer);

if(errno != 0)

fprintf(stream, "\r\n");

errno = 0;

#ifndef rep

fflush(stream);

#else

fclose(stream);

#endif

return;

}int rep_printf(const char *pcfmt, ...)

#ifdef __cplusplus

}#endif

學習Linux之出錯處理

errno.h標頭檔案中,定義了errno 當api呼叫出錯時,errno說明出錯的具體原因 可簡單地將errno理解成整型資料 出錯資訊轉換成可讀字串 includechar strerror int errno 以前的定義 extern int errno 不是執行緒安全的 多執行緒環境 usr...

APUE unix出錯處理

當unix函式出錯時 系統呼叫 常常會返回乙個負值,而且整型變數errno通常被設定為含有附加資訊的乙個值。檔案中定義了符合errno以及可以賦予它的各種常量,這些常量都以字元e開頭。另外,unix系統手冊第2部分的第1頁intro 2 列出了所有這些出錯常量。在linux中,出錯常量在errno ...

出錯處理函式

我們知道,系統函式呼叫不能保證每次都成功,必須進行出錯處理,這樣一方面可以保證程式邏輯正常,另一方面可以迅速得到故障資訊。出錯處理函式 include include char strerror int errnum see notes errnum 傳入引數,錯誤編號的值,一般取 errno 的值...