#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#define FILE_NAME (strrchr(__FILE__,'/')?(strrchr(__FILE__,'/')+1):__FILE__) //只取文件名
#define LOG_PRINTF(...) log_printf(FILE_NAME,__LINE__,__FUNCTION__,__VA_ARGS__) //打印文件名,行号,函数名,...
void log_printf(const char *file,int line,const char *func,const char *format,...)
{
va_list ap; /*初始化一个列表指针*/
unsigned int str_length;
char print_buff[1024];
char variable_buff[512];
va_start(ap,format); /*将可变参数列表压入栈中*/
vsnprintf(variable_buff,sizeof(variable_buff),format,ap); /*将可变参数存入variable_buff*/
va_end(ap); /*释放ap指针*/
sprintf(print_buff,"[%s,%d,%s]:%s",file,line,func,variable_buff); /*将格式化参数存入print_buff*/
str_length = strlen(print_buff); /*计算打印buff中数据长度*/
printf("%s",print_buff); /*将数据打印到串口*/
}
int main()
{
LOG_PRINTF("aaaa\r\n");
return 0;
}
C语言自定义打印函数的写法
最新推荐文章于 2024-07-21 11:43:06 发布