参数不确定的宏定义
来源:互联网 发布:进销存 知乎 编辑:程序博客网 时间:2024/05/16 06:49
在很多项目中,不管是记录日志还是打印错误信息到标准(错误)输出,为了能尽快定位到代码所在位置,可能需要记录或者打印代码所在文件和行数等信息。当然我们可以这样做:
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); \
}
对于符号##还不太清楚的朋友,可以参考上一篇文章《宏定义中的#、##和#@符号》。
可能很多朋友在平时学习或者项目中都可能会遇到这样的情况,所以在这做一个简单的笔记,希望对有需要的朋友有所帮助。
- 参数不确定的宏定义
- 参数个数不确定的函数
- python 函数不确定的参数
- 不确定的函数参数核算
- 可变参数,参数的个数不确定
- 不确定参数个数的函数的实现
- 不确定参数个数的函数的实现
- 不确定个数的数组参数的写法.
- 函数的参数不确定的编写方式
- 关于不确定参数的存储过程
- 参数个数不确定的函数调用
- 参数数目不确定的函数调用
- 关于函数中不确定参数的使用方法
- java如何表达参数的不确定
- C++可变长不确定类型的参数
- 对于参数个数不确定的方法简介
- c++ 参数个数不确定
- C语言不确定参数
- qt tcpip通讯程序注意
- 对“子类化”的理解
- VSS提示"Could not find the Visual SourceSafe Internet Web Service...
- 简单的搭建一个高并发低时延系统
- qt4.键盘方向键
- 参数不确定的宏定义
- DWR框架 ajax(3)
- 网页布局的九宫格基本布局
- 使用jdom读/写xml文档
- 20 处理非连续内存区访问
- 浏览器缓存
- hdoj1042
- symfony2添加services
- 21 创建和删除进程的地址空间