c语言log中常用宏介绍

c语言log中常用宏介绍

我们在开发过程中,不可避免需要增加调试log,不可避免的需要使用下面宏定义,使我们的log更加清晰有条理。
LINE:行号 使用%d控制输出
DATE:日期 使用%s控制输出
FILE:文件路径 使用%s控制输出
TIME:时间 使用%s控制输出
FUNCTION:调用函数 使用%s控制输出
这些宏不需要定义,编译器就可以识别,我们不需要纠结,只要知道使用即可。

下面是我在Linux和rtos中做的测试,代码很简单,直接使用宏均不会出现问题。
linux(ubuntu测试):

#include <stdio.h>

void main(void)
{
        printf("test macro definition start\n");
        printf("[%s][%d][%s][%s][%s]\n",__FUNCTION__,__LINE__,__DATE__,__FILE__,__TIME__);
        printf("test macro definition end\n");
}

程序输出:
在这里插入图片描述

rtos(开发板中测试,截取代码):

printf("[%s][%d][%s][%s][%s]MSC CTL INIT\n",__func__,__LINE__,__DATE__,__FILE__,__TIME__);  //__func__宏定义    #define __func__  __FUNCTION__

程序输出:
在这里插入图片描述

这里简单说下,自己开发调试过程中,除了使用平台封装好的打印函数(使用时可能存在打印优先级,不同平台差异性也大)外,也可以自己定义宏函数使用,或者如上方法,使用printf时,适当加上行号,函数等,使log更加具有可读性。

这里简单看下linux下常用函数DBG
#define DBG(…) fprintf(stderr, " DBG(%s, %s(), %d): ", FILE, FUNCTION, LINE); fprintf(stderr, VA_ARGS)

#include <stdio.h>


#define DBG(...) fprintf(stderr, " DBG(%s, %s(), %d): ", __FILE__, __FUNCTION__, __LINE__); fprintf(stderr, __VA_ARGS__)

void main(void)
{
        DBG("TEST DEBUG\n");
}

程序输出:
在这里插入图片描述
其中…表示字符串,最终替换__VA_ARGS__被打印出来,模拟其自己定义一个:
#define DBG_G(…) printf("[%s,%d]",FUNCTION,LINE);printf(VA_ARGS) 一样可以使用,实现log前增加函数与行号。

#include <stdio.h>


#define DBG_G(...) printf("[%s,%d]",__FUNCTION__,__LINE__);printf(__VA_ARGS__)

void main(void)
{
        DBG_G("TEST DEBUG_G\n");
}

程序输出:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值