https://segmentfault.com/a/1190000000600442

在日志中,使用到__FILE__来显示源码的文件名,可它显示了绝对路径,这样使得整个log看起来很长,主要log都显示在了右边,让人看着很是不舒服。查找了半天才知道这是编译造成的,由于编译目录和源码目录不同,所以在实际编译的时候使用的是源码的绝对路径,以致打印出来就是绝对路径了(这样的解释不是很准确,有待改进)。

针对这种现象,使用以下的例子作为测试。

#include <stdio.h>int main(int argc, char **argv)
{printf("%s, %d\n", __FILE__, __LINE__);return 0;
}

使用源码的全路径编译:

$ gcc -o filetest /srv/example/c/test/filetest.c

执行结果:

$ ./filetest
/srv/example/c/test/filetest.c, 5

为了解决以上问题,当然可以改变编译的方式:

$ gcc -o filetest filetest.c

执行结果:

$ ./filetest
filetest.c, 5

可对项目而言,改动一下会牵动很多的东西,那么可以对__FILE__进行一些操作:

#define __FILENAME__ (strrchr(__FILE__, '/') ? (strrchr(__FILE__, '/') + 1):__FILE__)

测试代码修改如下:

#include <string.h>
#include <stdio.h>#define __FILENAME__ (strrchr(__FILE__, '/') ? (strrchr(__FILE__, '/') + 1):__FILE__)int main(int argc, char **argv)
{printf("%s, %d\n", __FILENAME__, __LINE__);return 0;
}

执行结果:

$ ./filetest
filetest.c, 8

考虑到以上的操作需要两次执行strrchr,这种方案也被枪毙掉了。最后采取了换行的操作,只是使用脚本去分析log文件时有很大的不便,不能快速定位到哪个文件,毕竟它们显示在不同行上。

__FILE__显示全路径的问题相关推荐

  1. source insight(SI)怎么显示全路径?(不显示省略路径)(关闭Trim long path names with ellipses)

    source insight不显示全路径真是太让人头疼了,有时候点进去一个函数,跳出来好几个引用,显示省略的路径都是相同的,真不知道哪个才是真正被引用的... 但是我们可以关闭它!点击Options ...

  2. Source Insight中查看文件显示全路径

    使用Source insight的时候想看文件的全路径,但是默认的是中间省略的路径,所以可以通过: 1.Options-->Preferences-->Display 设置Trim lon ...

  3. 关于source insight、添加.s和.S文件,显示全部路径、加入项目后闪屏幕

    1.source insight使用也有一年多时间了,今天出现建工程后添加文件"no files found" 百思不得姐: 后面发现是原工程命名时出现非法字符.重新命名就ok了. ...

  4. linux命令行下全路径显示,显示命令及文件路径用什么命令?Linux命令知识有什么...

    查看Linux系统路径用什么命令?显示命令及其相关文件全路径的命令有哪些?快速定位文件路径用什么命令?Linux运维学习中,命令是非常重要的.每年学习Linux运维技术的人们越来越多,对于初学者来说, ...

  5. vc 6.0 显示文件全路径_Linux常用命令大全(非常全!!!)

    最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大.我将我了解到的命令列举一 ...

  6. Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)

    场景 Winform中DevExpress的TreeList的入门使用教程(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. linux查看进程自身全路径,在linux环境下如何查看进程的全路径

    一般用过linux的人都知道ps -ef|grep XXX 可是用ps看到的不是全路径, ps -ef|grep http 500       5948 15608  0 18:09 pts/0    ...

  8. access找不到输入表或者dual_在Access窗体中显示指定路径的图片

    ↑↑↑点击上方图片,了解详情 在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来.但是这样做有以下不足: 一.需要将图片逐一插入到表中,工作量太大. 二.使数据库 ...

  9. 在access窗体中加图片_如何在Access窗体中显示指定路径的图片

    在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来.但是这样做有以下不足:一.需要将图片逐一插入到表中,工作量太大.二.使数据库文件变得庞大.三.相同的图片文件, ...

最新文章

  1. LCS最长公共子序列和LIS最长上升子序列——例题剖析
  2. Python-编码之大彻大悟
  3. 使用maven 创建Quartz 任务示例_01
  4. 一台服务器的黑道生涯之八 谁信任谁
  5. 数字图像处理怎么讲yiq空间变成rgb空间_【JTRP】屏幕空间深度边缘光 Screen Space Depth Rimlight...
  6. 捣鼓小米路由器开发版本
  7. 【剑指offer中等部分4】二进制中1的个数(java)
  8. linux chrome 缓存,Linux设置chrome缓存至内存,及开关机同步
  9. ROG 2022 款幻 13 评测
  10. webApp用户体验优化——quickClick
  11. 考考你、智商题 小明借爸爸500元 又借妈妈500元 买双鞋 970元 还剩30元 还给爸爸10元...
  12. 从0到1构建基于Springboot+SpringCloud的微信点餐系统
  13. SpringBoot用MultipartFile.transferTo传递相对路径的问题
  14. 尚硅谷2020最新版宋红康JVM教程-中篇-第3章类的加载过程(类的生命周期)详解-4-过程三:Initialization(初始化)阶段
  15. 在windows下安装docker并使用
  16. 《企业应用架构模式》30天阅读计划
  17. 保研笔记一 软件工程与计算卷二(1-7章)
  18. 微信pc端怎么实现云服务器,使用易语言怎么实现PC端登陆微信
  19. Smarty-3.1.12配置
  20. 您的iPhone 已停用解决办法

热门文章

  1. 图书管理系统的c实现用于图书信息的管理。
  2. 数据结构——存储结构和逻辑结构
  3. matlab中传递函数的离散化
  4. ROS的代价地图与AMCL定位原理
  5. Web开发之常用框架BootStrap
  6. 友坚Android210更新---支持7寸电阻屏和电容屏
  7. LaTeX的入门使用(新手使用向)
  8. 基于数据库和ASP的网上教学资源管理系统的开发
  9. [JavaScript]如何将www.xxx.com变为com.xxx.www
  10. 专业计算机术语中英文对照(二)