带颜色输出的简单c宏定义

#include <stdlib.h>
#include <time.h>

#define NONE "\033[m"
#define RED "\033[1;31m"
#define GREEN "\033[1;32m"
#define BLUE "\033[1;34m"
#define CYAN "\033[1;36m"
#define PURPLE "\033[1;35m"
#define YELLOW "\033[1;33m"

#define _print(_level, args...)           \
	do                                    \
	{                                     \
		switch (_level)                   \
		{                                 \
		case (DEBUG):                     \
			printf(BLUE "[debug]" NONE);  \
			break;                        \
		case (INFO):                      \
			printf(PURPLE "[info]" NONE); \
			break;                        \
		case (WARN):                      \
			printf(RED "[warn]" NONE);    \
			break;                        \
		case (ERROR):                     \
			printf(RED "[error]" NONE);   \
			break;                        \
		};                                \
		printf(args);                     \
	} while (0)
#define _merge(__format__) CYAN "%s %s<%s>:%d " NONE __format__ "\n"
#define dengrui(_level, _format, args...)                                                  \
	do                                                                                     \
	{                                                                                      \
		_print(_level, _merge(_format), _logTime(), __func__, __FILE__, __LINE__, ##args); \
	} while (0)

enum _level
{
	DEBUG = 0,
	INFO,
	WARN,
	ERROR,
	FATAL
};
static struct tm *_ptm;
static time_t _time;
static char _result[20];
static char *_logTime(void)
{
	time(&_time);
	_ptm = localtime(&_time);
	sprintf(_result, "%02d-%02d-%02d %02d:%02d:%02d",
			_ptm->tm_year + 1900, _ptm->tm_mon + 1, _ptm->tm_mday, _ptm->tm_hour, _ptm->tm_min, _ptm->tm_sec);
	_result[20] = '\0';
	return _result;
}

C C++带多个参数的宏(...与__VA_ARGS__详解)_c++ __va_args___小杰哥dev的博客-CSDN博客

C/C++语言中如何使用宏打印行号、文件名和函数名_c++11 宏定义 文件行号_Raptor_2017的博客-CSDN博客

在c/c++中输入彩色日志输出,带有带有颜色的打印_xutopia77的博客-CSDN博客

Linux时间处理函数