分享自己寫的乙個簡化版LOG輸出巨集

2021-07-10 04:44:53 字數 976 閱讀 6911

extern int verbose;

#define dbg(...) xlog(4, "dbg", __va_args__)

#define info(...) xlog(3, "inf", __va_args__)

#define wrn(...) xlog(2, "wrn", __va_args__)

#define err(...) xlog(1, "err", __va_args__)

#define out(...) xlog(0, "out", __va_args__)

#define xlog(level, log_level, ...) \

do;\

time(&_tm);\

localtime_r(&_tm, &log_tm);\

fprintf(stdout, "%4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d %3s | ", log_tm.tm_year+1900, log_tm.tm_mon+1, log_tm.tm_mday, log_tm.tm_hour, log_tm.tm_min, log_tm.tm_sec, log_level);\

fprintf(stdout, __va_args__);}\

}\}while(0)

verbose是全域性變數,用來限制輸出等級,小於此等級的資訊會被輸出,例如,如果verbose = 4,則全部資訊都會輸出,如果verbose = 3,則dbg資訊不會輸出。

使用方法同printf,只是把printf替換為dbg、info等。

dbg("abcdefg%d.\n", a);

這是乙個非常簡化版的,並且只能輸出到螢幕,只需要將其加到.h檔案就可以使用。

另乙個版本需要.c和.h,使用也更複雜:

手寫乙個簡化版Tomcat

我們啟動tomcat時雙擊的startup.bat檔案的主要作用是找到catalina.bat,並且把引數傳遞給它,而catalina.bat中有這樣一段話 bootstrap.class是整個tomcat 的入口,我們在tomcat原始碼裡找到這個類,其中就有我們經常使用的main方法 這個類有兩...

Redux自己手寫乙個簡化版全面的redux

import react from react const renderscreen screen const renderbutton button 1.全域性渲染方法 渲染螢幕 renderscreen state.screen 渲染按鈕 renderbutton state.button 2....

如何實現乙個簡化版的 jQuery

對於操作dom來說,jquery是非常方便的乙個庫,雖然如今隨著react,vue之類框架的流行,jquery用得越來越少了,但是其中很多思想還是非常值得我們學習的,這篇文章將介紹如何從零開始實現乙個簡化版jquery。在這裡,我把這個庫命名為 clus class 的諧音 下面以 符號代替。首先需...