有什么方法可以检查预处理器中文件系统是否不区分大小写?

时间:2019-06-14 15:16:40

标签: c macos filesystems case-insensitive

如果文件系统不区分大小写,我想在预处理器中进行检查。 到目前为止,我一直认为macOS始终具有不区分大小写的路径,但是最近我读到它取决于文件系统。 我只需要一种在#if中进行检查的方法,因此可以相应地设置数组大小。

1 个答案:

答案 0 :(得分:5)

除非您有非常特殊的需求,否则这将是一个非常糟糕的主意。一个系统可以有多个文件系统,其中有些区分大小写,有些则不区分大小写。这甚至不寻常。仅此一点就证明在一般情况下无法解决该任务。从理论上讲,在给定路径的编译时可以这样做。但更糟糕的是,这些情况可能会改变。假设您的程序读取和/或写入/path/to/data,然后用户决定用其他内容替换文件系统。现在您的程序已损坏。

与此相关的大多数问题的最佳解决方案可能是在编译过程中不假设任何大小写敏感性。而是在执行过程中查找。

但是值得一提的是,不区分大小写的现代文件系统确实保留了文件名的原始大小写。不保留大小写的文件系统的一个示例是在旧的MS-DOS中使用的FAT,但是今天这种文件系统非常罕见。您会发现很难找到一个不是复古粉丝的人。