【问题标题】:Simulating case sensitivity on a filesystem that isn't case sensitive在不区分大小写的文件系统上模拟区分大小写
【发布时间】:2012-03-24 15:09:14
【问题描述】:

当我在不区分大小写的文件系统上使用 C++ 开发时,我会错过诸如

之类的问题
#include "File.h"

如果在磁盘上它实际上是file.h

仅当我最终尝试在区分大小写的文件系统上编译代码时才会出现此问题。

如何在不区分大小写的文件系统(例如 OSX 的默认设置)上模拟区分大小写?

编辑: 我正在寻找一种自动化解决方案,我现在和将来都可以通过“按一下按钮”运行它。

在 C++ 中严格按照类的确切名称(包括大小写)命名文件似乎也是一种非常好的风格。所以 SuperDuperClass 会出现在 SuperDuperClass.h 中。需要小写文件名的解决方案不适合。

【问题讨论】:

  • 您是否需要模拟区分大小写,或者是否足以过滤您的来源并在必要时转换为小写?
  • 可能最好在大小写不匹配时中断构建。您希望您的代码独立于文件系统进行编译。
  • @AndrewWhite 是的,绝对是。即使我在一个不区分大小写的系统上,我确实在寻找一种方法来中断构建。
  • @AdamLiss 我确实想模拟区分大小写。
  • Hpfs+ 默认不区分大小写??

标签: c++ macos unix g++


【解决方案1】:

我会把它扔出去。仅使用小写文件名。但是,我对更完整和可验证的答案感兴趣。

【讨论】:

  • 答案有什么无法验证的?您可以轻松地在源代码树中搜索并非全部小写的文件名,还可以使用 grep #include 指令查找“File.h”等实例。
  • 另外,养成这样一种习惯,你永远不会偶然输入#include "File.h"。
  • 我现在添加了一个“编辑”部分来澄清这个问题。
【解决方案2】:

在 Mac OS X 上,您可以使用磁盘工具在磁盘映像上创建区分大小写的文件系统。

【讨论】:

  • 这有点激进;你不会说吗?好吧,当然,我不需要擦除我的主磁盘并重新安装操作系统。用U盘就够了,但是软件解决这个问题真的那么难吗?
  • 您可以在磁盘映像上使用 HFS+CS。添加了一张图片来说明。 :)
【解决方案3】:

我很想编写类似 FileMon 的东西(在外部运行),并且只监视从 IDE 到文件系统的文件访问调用以检查大小写匹配。您不太可能从 IDE 或操作系统中获得任何自动检查(至少,在不破坏文件系统的情况下)。另一方面,监控文件访问的单独实用程序可以轻松捕获此类问题(一旦您克服了使监控工作的困境)。

无论如何,我的 2c。

【讨论】:

  • 编写像 FileMon 这样的东西并不是一个简单的练习。在这种情况下,我不妨编写一个带有附加功能的 C++ 预处理器,但我仍然希望有一个简单的解决方案——例如,通过结合一些标准的 unix 实用程序来指出有问题的行。
猜你喜欢
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2012-02-03
  • 2020-01-16
  • 2012-12-01
  • 2013-03-06
  • 2020-02-18
  • 1970-01-01
相关资源
最近更新 更多