C语言自定义打印函数的写法

#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;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值