linux C巨集定義實現列印除錯資訊
阿新 • • 發佈:2019-02-02
本文僅實現了三種巨集定義除錯
#define LOG(s) 日誌顯示(檔名:行號}+日誌資訊
#define ERROR(s) 錯誤資訊位置(級別+檔名+函式名+行號+錯誤資訊)
#define PrintArray2D(arr,m,n) 二維float陣列按行列列印顯示
程式碼如下:
#include <stdio.h> /** * 簡單列印除錯資訊 */ #define DEBUG 1 #ifdef DEBUG //日誌顯示(檔名:行號}+日期 #define LOG(s) printf("[%s:%d] %s\n", __FILE__, __LINE__, s) //錯誤資訊位置(級別+檔名+函式名+行號+錯誤資訊) #define ERROR(s) \ do{ \ fprintf(stderr, "[ERROR at:]%s %s(Line %d): %s\n",__FILE__,__FUNCTION__,__LINE__,s); \ }while(0) //二維float陣列列印顯示 #define PrintArray2D(arr,m,n) \ do \ { \ int i = 0; \ int j = 0; \ for(i=0;i<m;i++) \ { \ for(j=0;j<n;j++) \ { \ printf("%f ",arr[i][j]); \ } \ printf("\n"); \ } \ }while(0) #else //日誌不顯示 #define LOG(s) NULL //二維float陣列列印不顯示 #define PrintArray2D(arr,m,n) NULL //錯誤資訊不顯示 #define ERROR(s) NULL #endif
對此三種加上了條件編譯判斷,只有當DEBUG定義後,才顯示具體錯誤資訊,除錯陣列顯示資訊,否則一律為NULL,即不顯示
當除錯時,在該標頭檔案上方加入:#define DEBUG 1 語句即可
當不除錯改為發行版本時,註釋該語句
當然,還應該有一個時間顯示的巨集,但由於需要加入標頭檔案<time.h>,所以本次測試未測試該巨集語句
讀者可能在採用本程式碼時出現巨集定義錯誤情況,出現錯誤原因可能是 接續符“\"沒有嚴格為反斜槓
或者是位置錯誤引起的,此時在VC或者DEV環境下稍加除錯即可