对打印函数进行封装使用

概述

        printf是一个格式化标准输出的变参函数,输入参数没有固定数量,输出方向默认为stdout对应的终端。

#include <stdio.h>
int printf(const char *format, ...);

为什么要封装

        1. 一般在项目中我们加入printf打印调试,都会加入__FUNTION__ ,__LINE__或__FILE__,使得打印内容附带了它所在的函数名称,位置,文件名,好处是方便定位,但每加一条打印,都需要加入这些固定的参数,又显得麻烦

        2. 有的时候会遇到一种情况,需要改变打印的输出方向,比如指定为/dev/pts/186,这时就不能使用printf了。

代码实现

void log_printf(const char* fmt,...)
{
 char cmd[128] = {0};
 char ecmd[128] = {0};
 va_list args;
 va_start(args,fmt);
 //vprintf(fmt,args);
 vsprintf(cmd,fmt,args);
 sprintf(ecmd,"echo -n -e \"%s\" > /dev/pts/186",cmd);
 //printf("%s\n%s\n",cmd,ecmd);
 system(ecmd);
 va_end(args);
}

#define log(format,...)  log_printf("[%s:%d]"format"",__FUNCTION__,__LINE__,##__VA_ARGS__)

使用上与printf没有区别,如以下

//打印常量
log("1111111111111\n");

//打印变量
log("%s    %d    %c\n", string,number,letter);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值