Есть ли способ проверить, не зависит ли файловая система от регистра в препроцессорах? - PullRequest
4 голосов
/ 14 июня 2019

Я хочу проверить в препроцессоре, чувствительна ли регистр к файловой системе. До сих пор я предполагал, что у macOS всегда есть пути без учета регистра, но недавно я прочитал, что это зависит от файловой системы. Мне просто нужен был способ сделать эту проверку в #if, чтобы я мог соответственно установить размер моего массива.

1 Ответ

5 голосов
/ 14 июня 2019

Это было бы очень плохой идеей, если у вас нет особых потребностей. Одна система может иметь несколько файловых систем, где некоторые чувствительны к регистру, а некоторые нет. Это даже не необычно. Уже одно это доказывает, что задачу невозможно решить в общем случае. Теоретически возможно сделать это во время компиляции для данного пути. Но что еще хуже, эти обстоятельства могут измениться. Допустим, ваша программа читает и / или записывает в /path/to/data, а затем пользователь решает заменить файловую систему чем-то другим. Теперь ваша программа не работает.

Лучшее решение для большинства проблем, связанных с этим, - это, вероятно, не предполагать что-либо о чувствительности к регистру во время компиляции. Вместо этого узнайте во время исполнения.

Но стоит упомянуть, что современные файловые системы без учета регистра сохраняют исходный регистр имени файла. Примером файловой системы, не сохраняющей регистр, является FAT, используемый в старой MS-DOS, но эта файловая система сегодня встречается очень редко. Вам будет трудно найти кого-то, кто не является фанатом ретро, ​​использующим их.

...