Типизированная константа - Большая Энциклопедия Нефти и Газа, статья, страница 2
Легче изменить постановку задачи так, чтобы она совпадала с программой, чем наоборот. Законы Мерфи (еще...)

Типизированная константа

Cтраница 2


Директивы выравнивания влияют только на поля записей и классов. Переменные и типизированные константы выравниваются всегда, независимо от директив выравнивания.  [16]

Типизованные константы можно использовать точно так же, как переменные того же самого типа, и они могут появляться в левой части оператора присваивания. Отметим, что типизированные константы задаются только один раз - в начале выполнения программы. Таким образом, при каждом новом входе в процедуру или функцию локально объявленные типизированные константы заново не инициализируются.  [17]

Особенностью компилятора Турбо Паскаль ( точнее, его редактора связей - компоновщика) является то, что в выполнимый код программы не входят те переменные, которые объявлены, но не используются. То же самое имеет место и для типизированных констант.  [18]

В этих случаях выходом из положения может являться применение типизированных констант ( см. разд. Другой подход - программно задавать значение переменной перед первым ее использованием. Учтите, что если этого не сделать, то значение переменной непредсказуемо. Оно зависит от случайного состояния памяти в момент, когда под переменную выделяется соответствующая область памяти.  [19]

До Delphi 7 эта директива компилятора была включена по умолчанию. При выключенной директиве J изменять во время выполнения значения типизированных констант невозможно. В этом случае они становятся просто именованными константами.  [20]

Поэтому прежние коды, использующие эти возможности, следует компилировать с директивой J, разрешающей изменять типизированные константы. Однако, новые приложения следует компилировать с директивой J -, при которой типизированные константы - действительно константы и попытка их изменения вызовет сообщение компилятора об ошибке.  [21]

Но если, например, в приложении в ряде мест надо проводить проверки, аналогичные приведенным выше, то целесообразнее объявить переменную или типизированную константу типа множества или тип множества и несколько переменных этого типа.  [22]

OBJ, который может компоноваться с любой программой Турбо Паскаля как процедура. Это может быть полезным, если естьдвоичный файл данных, который должен находиться в сегменте кода, или он слишком велик, чтобы разместиться в массиве типизированных констант.  [23]

Отличие от простых констант внешне небольшое: просто вклинилось описание типа. Но типизированные константы уже не могут принимать участие в выражениях для других констант; они ведь не столько константы, сколько переменные.  [24]

Типизованные константы можно использовать точно так же, как переменные того же самого типа, и они могут появляться в левой части оператора присваивания. Отметим, что типизированные константы задаются только один раз - в начале выполнения программы. Таким образом, при каждом новом входе в процедуру или функцию локально объявленные типизированные константы заново не инициализируются.  [25]

Поэтому прежние коды, использующие эти возможности, следует компилировать с директивой J, разрешающей изменять типизированные константы. Однако, новые приложения следует компилировать с директивой J -, при которой типизированные константы - действительно константы и попытка их изменения вызовет сообщение компилятора об ошибке.  [26]

Впрочем, эта особенность реализации языка может привести и к скрытым ошибкам. Из изложенного следует, что инициализация статической переменной стартовым значением происходит лишь один раз: при первом вызове подпрограммы. Поэтому будет ошибкой считать локальные типизированные константы действительно константами.  [27]

Обыкновенные локальные переменные в подпрограммах всегда забывают свое значение в момент окончания работы соответствующей подпрограммы. А при повторном вызове стартовые значения локальных переменных совершенно случайны. И если надо сохранять от вызова к вызову какую-нибудь локальную информацию, то ни в коем случае нельзя полагаться на локальные переменные, описанные в разделах VAR процедур и функций или как параметры-значения в заголовках. Но в этом случае приходится отводить глобальные переменные, по сути, под локальные данные. Турбо Паскаль позволяет решать эту проблему, используя статические локальные переменные или, что то же самое, локальные переменные со стартовым значением. Они вводятся как типизированные константы ( рис. 6.15) по тем же правилам, что и их глобальные аналоги ( см. разд.  [28]



Страницы:      1    2