Ошибки во время выполнения из-за чувствительности к регистру в именах (переменных)
-
13-09-2019 - |
Вопрос
Недавно у нас возникла проблема (ANTLR “Не удается запустить отладчик.Тайм-аут ожидания подключения к удаленному анализатору.”) где произошла ошибка во время выполнения, которая могла быть вызвана чувствительностью к регистру в именах (переменных) и зависела от операционной системы.Это было в ANTLR, но в более общем плане мне интересно, существуют ли распространенные случаи (на любом языке), когда имена отличаются только регистром, программа компилируется, но возникают ошибки во время выполнения из-за коллизий имен.Вероятно ли также, что существует разница между UNIX и Windows?
В качестве возможного примера могу ли я создать два класса Java в одном пакете: Foo
в Foo.java
и
foo
в foo.java
в UNIX, в то время как я не могу сделать то же самое в Windows?Если нет, то попадает ли это в ловушку компилятора и какое ограничение он накладывает на равенство регистров?И как другие распространенные языки относятся к этой проблеме?
[Конечно, я не пытаюсь это делать намеренно, но вкрадываются ошибки, и я в значительной степени полагаюсь на компиляторы в их обнаружении.]
Решение
По-видимому, это не вызывает большого беспокойства у большинства людей