Справочник по Ada 2012
7.4 Отложенные константы
Декларации отложенных констант могут использоваться для объявления констант во видимой части пакета, но со значением константы, задаваемым в приватной части. Они также могут использоваться для объявления констант, импортированных из других языков (см. Приложение B).
Правила законности
Декларация отложенной константы — это объявление объекта с ключевым словом constant, но без выражения инициализации. Константа, объявленная декларацией отложенной константы, называется отложенной константой. Если для декларации отложенной константы аспект Import (см. B.1) не имеет значение True, то декларация отложенной константы требует завершения, которое должно быть полным объявлением константы (называемым полным объявлением отложенной константы).
Декларация отложенной константы, завершенная полным объявлением константы, должна располагаться непосредственно в видимой части спецификации пакета. Для этого случая к соответствующему полному объявлению применяются следующие дополнительные правила:
- Полное объявление должно располагаться непосредственно в приватной части того же пакета;
- Отложенная и полная константы должны иметь тот же тип или должны иметь статически совпадающие анонимные типы доступа;
- Если декларация отложенной константы включает указание типа подтипа S, определяющее ограниченный подтип, то ограничение, определенное указанием типа подтипа в полном объявлении, должно статически соответствовать ограничению, определенному S. С другой стороны, если подтип отложенной константы неограничен, то полное объявление по-прежнему может наложить ограничение. Константа сама будет ограничена, как и все константы;
- Если декларация отложенной константы включает ключевое слово aliased, то полное объявление также должно;
- Если подтип декларации отложенной константы исключает null, то подтип полного объявления также должен исключать null.
Декларация отложенной константы, для которой аспект Import имеет значение True, не должна появляться в видимой части спецификации пакета и не имеет полного объявления константы.
Завершение декларации отложенной константы должно произойти до того, как константа будет заморожена (см. 13.14).
Динамическая семантика
Выполнение декларации отложенной константы выполняет указание типа подтипа, определение доступа или (только в случае импортированной константы) определение типа массива.
ПРИМЕЧАНИЯ
14 Полное объявление константы для отложенной константы, которая имеет данный приватный тип или приватное расширение, не разрешается до соответствующего полного объявления типа. Это следствие правил заморозки типов (см. 13.14).
Примеры
Примеры деклараций отложенных констант:
Null_Key : constant Key; -- см. 7.3.1
CPU_Identifier : constant String(1..8)
with Import => True, Convention => Assembler, Link_Name => "CPU_ID";
-- см. B.1
with Import => True, Convention => Assembler, Link_Name => "CPU_ID";
-- см. B.1