向來寫的除錯資訊都是隨意輸出,無論是檢視起來還是寫起**來都不方便,於是寫了乙個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...