Spec-Zone.ru › Ada 2012
Справочник по Ada 2012

10.1.5 Директивы и программные единицы

В данном подпункте рассматриваются директивы, относящиеся к программным единицам, единицам библиотек и компиляциям.

Правила разрешения имен

Определены некоторые директивы как директивы программных единиц. Имя, используемое в качестве аргумента директивы программной единицы, должно разрешаться для обозначения объявлений или переименований одной или нескольких программных единиц, которые находятся непосредственно внутри области объявления или компиляции, в которой непосредственно встречается директива, или оно должно разрешаться для обозначения объявления непосредственно охватывающей программной единицы (если таковая имеется); директива применяется к обозначенной(ым) программной(ым) единице(ам). Если в качестве аргументов не указано никаких имен, то директива применяется к непосредственно охватывающей программной единице.

Правила легитимности

Директива программной единицы должна появляться в одном из следующих мест:
  • В месте единицы_компиляции, в этом случае директива должна непосредственно следовать за объявлением_единицы_библиотеки, являющейся объявлением_подпрограммы, объявлением_обобщенной_подпрограммы или инстанциацией_обобщения, и директива должна иметь аргумент, являющийся именем, обозначающим это объявление.
  • Непосредственно внутри видимой части программной единицы и перед любым вложенным объявлением (но не внутри формальной части обобщения), в этом случае аргумент, если таковой имеется, должен быть прямым_именем, обозначающим объявление непосредственно охватывающей программной единицы.
  • В месте объявления, отличного от первого, части_объявлений или объявления программной единицы, в этом случае директива должна иметь аргумент, который должен быть прямым_именем, обозначающим одну или несколько из следующих (и ничего больше): объявление_подпрограммы, объявление_обобщенной_подпрограммы или инстанциацию_обобщения, той же самой части_объявлений или объявления программной единицы.
Некоторые директивы программных единиц определены как директивы единиц библиотек. Если директива единицы библиотеки применяется к программной единице, то эта программная единица должна быть единицей библиотеки.

Статическая семантика

Директива единицы библиотеки, применяемая к обобщенной единице, не применяется к её инстанциям, если конкретное правило для директивы не указывает обратное.

Правила после компиляции

Некоторые директивы определены как директивы конфигурации; они должны появляться перед первой единицей_компиляции в компиляции. Они обычно используются для выбора опции на уровне раздела или на уровне системы. Директива применяется ко всем единицам_компиляции, встречающимся в компиляции, если таковые имеются, в противном случае она применяется ко всем будущим единицам_компиляции, скомпилированным в ту же среду.

Разрешения реализации

Реализация может потребовать, чтобы директивы конфигурации, выбирающие опции на уровне раздела или на уровне системы, были скомпилированы, когда среда не содержит элементов_библиотеки, кроме тех, что входят в предопределённую среду. В этом случае реализация должна принять директивы конфигурации в отдельных компиляциях, подтверждающих первоначально выбранные опции на уровне раздела или на уровне системы.

Рекомендации для реализации

При применении к обобщенной единице, директива программной единицы, которая не является директивой единицы библиотеки, должна применяться к каждой инстанции обобщенной единицы, для которой не установлена переопределяющая директива, применённая непосредственно к инстанции.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API