__FILE__显示全路径的问题
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__显示全路径的问题相关推荐
- source insight(SI)怎么显示全路径?(不显示省略路径)(关闭Trim long path names with ellipses)
source insight不显示全路径真是太让人头疼了,有时候点进去一个函数,跳出来好几个引用,显示省略的路径都是相同的,真不知道哪个才是真正被引用的... 但是我们可以关闭它!点击Options ...
- Source Insight中查看文件显示全路径
使用Source insight的时候想看文件的全路径,但是默认的是中间省略的路径,所以可以通过: 1.Options-->Preferences-->Display 设置Trim lon ...
- 关于source insight、添加.s和.S文件,显示全部路径、加入项目后闪屏幕
1.source insight使用也有一年多时间了,今天出现建工程后添加文件"no files found" 百思不得姐: 后面发现是原工程命名时出现非法字符.重新命名就ok了. ...
- linux命令行下全路径显示,显示命令及文件路径用什么命令?Linux命令知识有什么...
查看Linux系统路径用什么命令?显示命令及其相关文件全路径的命令有哪些?快速定位文件路径用什么命令?Linux运维学习中,命令是非常重要的.每年学习Linux运维技术的人们越来越多,对于初学者来说, ...
- vc 6.0 显示文件全路径_Linux常用命令大全(非常全!!!)
最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大.我将我了解到的命令列举一 ...
- Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)
场景 Winform中DevExpress的TreeList的入门使用教程(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- linux查看进程自身全路径,在linux环境下如何查看进程的全路径
一般用过linux的人都知道ps -ef|grep XXX 可是用ps看到的不是全路径, ps -ef|grep http 500 5948 15608 0 18:09 pts/0 ...
- access找不到输入表或者dual_在Access窗体中显示指定路径的图片
↑↑↑点击上方图片,了解详情 在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来.但是这样做有以下不足: 一.需要将图片逐一插入到表中,工作量太大. 二.使数据库 ...
- 在access窗体中加图片_如何在Access窗体中显示指定路径的图片
在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来.但是这样做有以下不足:一.需要将图片逐一插入到表中,工作量太大.二.使数据库文件变得庞大.三.相同的图片文件, ...
最新文章
- LCS最长公共子序列和LIS最长上升子序列——例题剖析
- Python-编码之大彻大悟
- 使用maven 创建Quartz 任务示例_01
- 一台服务器的黑道生涯之八 谁信任谁
- 数字图像处理怎么讲yiq空间变成rgb空间_【JTRP】屏幕空间深度边缘光 Screen Space Depth Rimlight...
- 捣鼓小米路由器开发版本
- 【剑指offer中等部分4】二进制中1的个数(java)
- linux chrome 缓存,Linux设置chrome缓存至内存,及开关机同步
- ROG 2022 款幻 13 评测
- webApp用户体验优化——quickClick
- 考考你、智商题 小明借爸爸500元 又借妈妈500元 买双鞋 970元 还剩30元 还给爸爸10元...
- 从0到1构建基于Springboot+SpringCloud的微信点餐系统
- SpringBoot用MultipartFile.transferTo传递相对路径的问题
- 尚硅谷2020最新版宋红康JVM教程-中篇-第3章类的加载过程(类的生命周期)详解-4-过程三:Initialization(初始化)阶段
- 在windows下安装docker并使用
- 《企业应用架构模式》30天阅读计划
- 保研笔记一 软件工程与计算卷二(1-7章)
- 微信pc端怎么实现云服务器,使用易语言怎么实现PC端登陆微信
- Smarty-3.1.12配置
- 您的iPhone 已停用解决办法