Справочник по Ada 2005
E.2.1 Общие пассивные библиотечные модули
Общий пассивный библиотечный модуль используется для управления глобальными данными, общими для активных разделов. Ограничения для общих пассивных библиотечных модулей предотвращают доступ к данным или задачам одного активного раздела из другого активного раздела через ссылки, неявные в объявленных объектах в общем пассивном библиотечном модуле.
Синтаксис
Формат директивы Shared_Passive выглядит следующим образом:
pragma Shared_Passive[(имя_библиотечного_модуля_имя)];
Правила правомерности
Общий пассивный библиотечный модуль — это библиотечный модуль, к которому применяется директива Shared_Passive. К такому библиотечному модулю применяются следующие ограничения:
- он должен быть предварительно вычисляемым (см. 10.2.1);
- он должен зависеть семантически только от объявленных чистых или общих пассивных библиотечных модулей;
- он не должен содержать объявления на уровне библиотеки типа доступа, указывающего на тип класса, тип задачи или защищенный тип с объявлением входа.
Несмотря на определение доступности, приведенное в 3.10.2, объявление библиотечного модуля P1 недоступно внутри области объявления общего пассивного библиотечного модуля P2, если общий пассивный библиотечный модуль P2 не зависит семантически от P1.
Статическая семантика
Общий пассивный библиотечный модуль предварительно вычисляется.
Правила после компиляции
Общий пассивный библиотечный модуль должен быть назначен не более чем одному разделу в данной программе.
Несмотря на правило, приведенное в 10.2, единица компиляции в данном разделе не обязана (в смысле 10.2) включать в этот же раздел общие пассивные библиотечные модули, от которых она зависит семантически; они обычно находятся в отдельных пассивных разделах.