加载中…
个人资料
JohnnyZhao
JohnnyZhao
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,712
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++日志中__FILE__去掉路径

(2018-12-17 15:44:52)
标签:

qt

log

__file__

分类: linux
在C/C++编译时,可以使用__FUNCTION__、__FILE__和__LINE__等编译器内置宏定义获得运行函数、文件及行数等信息,其中__FILE__变量的值会有变化。
最近在Linux下QT编程写日志时,也想使用这几个宏定义,结果__FILE__输出的是相对路径(根据工程pro文件中使用的文件名),这样在日志中,会显得文件名称有路径名称,导致日志可读性降低。在网上搜索了两种解决的办法:
1,重新定义__FILE__宏定义;
CFALG += -U__FILE__ -D__FILE__='"$(subst $(dir $<),,$<)"'
该方法在QT中没有试验成功(当然CFLAG需要改为QT中关键字)
2,新加一个宏定义来解析文件名
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
该方法中使用了两次strrchr函数,运行效率会有些影响

最终还是自己写了一个函数,从头遍历__FILE__变量,找到最后一个“/”符号,然后返回后面的字符串,当找不到时直接返回__FILE__变量。
char *Log::GetFileName(const char *file) 
char *name = NULL; 
char *ptr = (char*)file; 
if(file == NULL) 
return NULL; 
while(*ptr != '\0') 
if(*ptr == '/') 
name = ptr; 
ptr++; 
return name == NULL ? (char*)file : (name+1); 
}

感谢链接:
方法1:https://blog.csdn.net/huojianying123456/article/details/70176755
方法2:http://www.it1352.com/348777.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有