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

Mih*_*hir 5 c filesystems macos case-insensitive

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

klu*_*utt 5

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

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

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