封装一个自己的打印函数

大耗子 2020年08月18日 103次浏览

封装一个自己的打印函数

#include <stdio.h>
#include <stdarg.h>

#define DEBUG_BUF_MAX 4096
void debug_info(char *file, const char *func, unsigned int line, const char *fmt, ...)
{
	int ret = 0;
	char tmp[DEBUG_BUF_MAX] = { 0 };
	char buf[DEBUG_BUF_MAX] = { 0 };

	va_list ap;
	va_start(ap, fmt);

	vsnprintf(tmp, DEBUG_BUF_MAX - 1, fmt, ap);
	snprintf(buf, DEBUG_BUF_MAX - 1, "[%s] (%s:%u):%s", file, func, line, tmp);
	printf("%s",buf);
	va_end(ap);
}

#define DEBUG_PRINT(fmt, ap...) \
	debug_info(__FILE__, __FUNCTION__, __LINE__, fmt, ##ap);\
	//printf("[%s:%d]" fmt "\n", __FUNCTION__, __LINE__, ##ap)

调用示例

void main(void)
{
	DEBUG_PRINT("printf test %d\n",100);
}