参数不确定的宏定义

在很多项目中,不管是记录日志还是打印错误信息到标准(错误)输出,为了能尽快定位到代码所在位置,可能需要记录或者打印代码所在文件和行数等信息。当然我们可以这样做:

printf("%s(%s:%d): %s\n", __FILE__, __FUNCTION__, __LINE__, err_msg);

或者

fprintf(fp, "%s(%s:%d): %s\n", __FILE__, __FUNCTION__, __LINE__, log);

 

但是,每一处代码都需要添加文件、函数名和行数等信息,是否觉得比较麻烦呢?接下来,我们提供一种通过定义宏的方法来解决这个问题。实现很简单,如下:

#define PRINT(format, args...)  \
{   \
    char temp[128] = "%s(%s:%d): "; \
    strcat(temp, format);   \
    printf(temp, __FILE__, __FUNCTION__, __LINE__, ##args);   \
}

 

对于符号##还不太清楚的朋友,可以参考上一篇文章《宏定义中的#、##和#@符号 》。

可能很多朋友在平时学习或者项目中都可能会遇到这样的情况,所以在这做一个简单的笔记,希望对有需要的朋友有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值