c++ 调试程序log使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiayichendddd/article/details/9285017
调试程序使用的:
1 #运算符把跟在其后的参数转换成一个字符串
2 如果你按下面的方式做
#define STRINGIFY(x) #x
#define AT __FILE__ ":" STRINGIFY(__LINE__) 
你会发现打印的时候只能显示文件名
3 如果你在宏上面再嵌套一个宏,变成如下:
#include <stdio.h>
#define STRINGIFY(x) #x
#define TOSTRING(x)  STRING_DEFINE(x)
#define AT_FILE  __FILE__ ":" TOSTRING(__LINE__)

int main(int , char**)
{
  printf(AT_FILE" %s", " error");
  return 0;
}
输出        at xxx.cpp:11 error

可变参数的传递可以使用 ##__VA_ARGS__ ,其原理可参考我转的另一篇文章
#define err_log(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__)
当前行与文字的宏的字符串,前面的宏(AT_FILE )在gcc中可以使用下面的宏在vs和gcc中可以使用
 111.cpp(111)
#ifndef __FILE_LINE__
#define	_TLN(LN)		#LN
#define	__TLINE__(LN)	_TLN(LN)
#define	__FILE_LINE__	__FILE__"("__TLINE__(__LINE__)")"
#endif  
阅读更多
换一批

没有更多推荐了,返回首页