OberonCore https://forum.oberoncore.ru/ |
|
доделал SET64 для 32-разрядной ЯОС и возник вопрос https://forum.oberoncore.ru/viewtopic.php?f=22&t=6670 |
Страница 1 из 1 |
Автор: | budden [ Суббота, 07 Ноябрь, 2020 14:49 ] |
Заголовок сообщения: | доделал SET64 для 32-разрядной ЯОС и возник вопрос |
Она сыпет ворнингами и часть тестов падает, но на вид выглядит работоспособным, в том смысле, что четыре платформы собираются, запускаются, графический интерфейс работает, ИСР и веб-браузер открывают сайтик. Если бы совсем не работало, то этот тест бы не прошёл. В телеграме Сергей Дурманов объяснил, что конструкторы множества, такие как {var1..var2} создают множество максимально возможного размера. Соответственно, после того, как появился в 32-разрядной ЯОС тип SET64, внезапно перестали компилироваться присваивания такие: переменнаяТипаSET := {var1..var2}, поскольку справа стал возвращаться тип SET64. Пришлось везде вставлять явное преобразование, это затронуло до десятка файлов. Т.е. приходится вместо {var1..var2} писать SET({var1..var2}) - это уже какой-то маразм. С константными конструкторами, такими, как {1..10} всё нормально - проверка типа происходит во время компиляции. Мне кажется, было бы как-то более последовательно, если бы конструктор множества {var1..var2} создавал бы тип SET, и, соответственно, проверял бы ограничения во время выполнения. А если нужен бОльший SET, то нужно писать как-то так: SET64{var1..var2}. Потому что иначе завтра введут SET128 и придётся везде в 64-разрядных платформах тоже править такие конструкторы. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |