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

Is there any way of checking if file system is case-insensitive in the preprocessors?

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

除非您有非常具体的需求,否则这将是一个非常糟糕的主意。一个系统可以有多个文件系统,有的区分大小写,有的不区分大小写。这甚至不是不寻常的。仅此一点就证明在一般情况下该任务是不可能解决的。对于给定路径,理论上可以在编译时执行此操作。但更糟糕的是,这些情况可能会发生变化。假设您的程序读取 and/or 写入 /path/to/data,然后用户决定用其他东西替换文件系统。现在你的程序坏了。

与此相关的大多数问题的最佳解决方案可能是在编译期间不对大小写敏感度做任何假设。相反,在执行过程中找出。

但值得一提的是,现代不区分大小写的文件系统确实会保留文件名的原始大小写。不保留大小写的文件系统的一个例子是旧 MS-DOS 中使用的 FAT,但这种文件系统在今天非常少见。你会发现很难找到不是 retro-fan 的人使用它们。