OberonCore https://forum.oberoncore.ru/ |
|
Значения констант в символьных файлах https://forum.oberoncore.ru/viewtopic.php?f=30&t=2897 |
Страница 1 из 1 |
Автор: | Rifat [ Четверг, 07 Октябрь, 2010 10:29 ] |
Заголовок сообщения: | Значения констант в символьных файлах |
Мне не понятен один момент, почему при создании символьного файла туда сохраняются ЗНАЧЕНИЯ констант. Если значение константы в импортированном модуле поменяется, то надо перекомпилировать и тот модуль, который его импортирует. Почему бы не сохранять в символьный файл просто название константы и место, в объектом файле, где оно храниться, тогда если константа измениться, модуль который его импортирует не потребует перекомпиляции. |
Автор: | Илья Ермаков [ Четверг, 07 Октябрь, 2010 11:33 ] |
Заголовок сообщения: | Re: Значения констант в символьных файлах |
Дело в том, что в каждый модуль, где используется константа, её значение внедряется при компиляции. Иногда уже в неявном, вычисленном виде. Например: x := 2* MyMath.pi - компилятор возьмёт значение константы pi из модуля MyMath, умножит на 2 и в ваш модуль запишет прямо в код результат. А ссылка на константу другого модуля вставляется именно затем, чтобы отследить, если она поменялась, и потребовать от программиста перекомпиляции. Вообще, раз введённые константы менять не следует. Если же Вам это нужно, то это по смыслу уже не константа, а то, что в других языках часто называется константной переменной. Делается так: Код: MODULE Demo; CONST _myVal = 10; VAR myVal-: INTEGER; BEGIN myVal := _myVal END Demo; Практический пример: есть константы с обозначениями валют. Они неизменны, но могут появляться новые. Удобно иметь величину, которая хранит максимальную существующую константу валюты (для разных переборов). Код: CONST wmz* = 101; wmr* = 102; wmb* = 103; ... _lastWm = 103; VAR lastWm-: INTEGER Тогда во внешних модулях можно спокойно, устойчиво к любому добавлению констант, перебирать: Код: i := Types.wmz;
WHILE i <= Types.lastWm DO ... INC(i) END |
Автор: | Rifat [ Четверг, 07 Октябрь, 2010 12:29 ] |
Заголовок сообщения: | Re: Значения констант в символьных файлах |
Спасибо за ответ. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |