printf列印輸出彩色資訊輔助除錯

2021-06-21 04:50:35 字數 2874 閱讀 8579

向來寫的除錯資訊都是隨意輸出,無論是檢視起來還是寫起**來都不方便,於是寫了乙個debug資訊輸出庫,便於輸出debug資訊。

debug 資訊分為close,info,warning,error,critical五級,分別以不同的顏色輸出,使用debug1,debug2,debug3,debug4巨集來呼叫,全域性變數g_debug定義為0時,關閉debug資訊輸出,高等級會使低於這個等級的debug資訊輸出,高於的則不輸出,如g_debug=3,debug1,debug2,debug3的都會輸出,debug4則不輸出,這樣用起來方便多了。

**如下:

#ifndef __print_h__

#define __print_h__

#include

#include

#include

#include

#define fd stdout

#define color_code(codes) "\033[" codes "m"

#defineblack 

color_code("30")

#definered 

color_code("31")

#definegreen 

color_code("32")

#defineyellow 

color_code("33")

#defineblue 

color_code("34")

#definepurple 

color_code("35")

#definecyan 

color_code("36")

#definewhite 

color_code("37")

#define mode_code(codes) "\033[" codes "m"

#definebright 

mode_code("1")

#define underline mode_code("4")

#defineflash 

mode_code("5")

#defineinverse 

mode_code("7")

#definenone 

mode_code("0")

#defineprint_ansi_start(mode,color) fputs(mode,fd); \

fputs(color,fd)

#defineprint_ansi_stop 

fputs(none,fd); \

fputs("\n",fd)

typedef enum debug_level

debug_level;

typedef struct debug_st

debug_st;

void inline debugprint(debug_level level, const char* file, constint line, const char* fmt, ...);

#define debug(level, file, line, fmt,...) debugprint(level, file, line, fmt,##__va_args__)

#define debug1(fmt, ...) if(g_debug-1> debug_none) \

debug(debug_info, __file__, __line__, fmt, ##__va_args__)

#define debug2(fmt, ...) if(g_debug-1> debug_info) \

debug(debug_warning, __file__, __line__, fmt, ##__va_args__)

#define debug3(fmt, ...) if(g_debug-1> debug_warning) \

debug(debug_error, __file__, __line__, fmt, ##__va_args__)

#define debug4(fmt, ...) if(g_debug-1> debug_error) \

debug(debug_critical, __file__,  __line__, fmt,##__va_args__)

#endif //__print_h__

#include "print.h"

static debug_st debug_st =,,

,,};void inline debugprint(debug_level level, const char* file, constint line, const char* fmt,...) 

#include

#include "print.h"

void usage();

int g_debug = 0;

int main(int argc, char **argv)

server = argv[i];

}if(!strcmp(argv[i], "-d"))

g_debug = 1;

if(!strcmp(argv[i], "-dd"))

g_debug = 2;

if(!strcmp(argv[i], "-ddd"))

g_debug = 3;

if(!strcmp(argv[i], "-dddd"))

g_debug = 4;

}printf("server:%s\n",server);

debug1("thisis debug1");

debug2("thisis debug2");

debug3("thisis debug3");

debug4("thisis debug4");

return0;

}void usage()

Shell列印輸出printf 命令

上一節我們學習了 shell 的 echo 命令,本節我們來學習 shell 的另乙個輸出命令 printf。printf 命令模仿 c 程式庫 library 裡的 printf 程式。printf 由 posix 標準所定義,因此使用 printf 的指令碼比使用 echo 移植性好。print...

printf 彩色列印

控制字元的通用格式如下 esc m 其中 esc 是轉義字元,其值為 033 是常量的左中括號 是若干屬性,通常是由乙個有特定意義的數字代替,每個屬性之間用分號分隔 m 就是字面常量字元m 部分顏色 字背景顏色 40 49 字顏色 30 39 40 黑 30 黑 41 紅 31 紅 42 綠 32 ...

彙編 輸出彩色字型

by 1wangxiaobo 163.com datas segment str db wang xiao bo colour.s test cn db str clour db 10000010b datas ends stacks segment 此處輸入堆疊段 stacks ends code...