Данная директива требует, чтобы элаборация
Данная директива требует, чтобы элаборация тела модуля была осуществлена сразу после элаборации спецификации.
Предположим, что модуль A содержит данную директиву, а модуль B указывает в спецификаторе
with модуль A.
Напомним, что стандартные правила требуют, чтобы элаборация спецификации модуля A
была выполнена перед элаборацией модуля, который указывает модуль A в спецификаторе
with.
Указание этой директивы компилятора в модуле A
говорит о том, что элаборация тела модуля A
будет выполнена перед элаборацией B.
Таким образом, обращения к модулю A будут безопасны и не нуждаются в дополнительных проверках.
Примечательно, что в отличие от директив Pure и Preelaborate
использование директивы Elaborate_Body не гарантирует, что программа свободна от проблем связанных с элаборацией, поскольку возможно наличие ситуации, которая не удовлетворяет требования порядка элаборации.
Вернемся к примеру с модулями Unit_1 и Unit_2.
Если поместить директиву Elaborate_Body в Unit_1, а модуль Unit_2 оставить без изменений, то порядок элаборации будет следующий:
Spec of Unit_2 Spec of Unit_1 Body of Unit_1 Body of Unit_2
|
В этом случае подразумевается, что нет необходимости проверять вызов Func_1 из модуля Unit_2
поскольку он должен быть безопасным.
Вызов Func_2 из модуля Unit_1, когда результат вычисления выражения Expression_1 равен 1, может быть ошибочным.
Следовательно, ответственность за отсутствие подобной ситуации возлагается на программиста.
Когда все модули содержат директиву компилятора Elaborate_Body, то проблемы порядка элаборации отсутствуют, кроме случаев когда вызовы подпрограмм осуществляются из тела, забота о котором в любом случае возлагается на программиста.
Следует заметить, что повсеместное использование этой директивы не всегда возможно.
В частности, для показанного ранее примера с модулями Unit_1 и Unit_2, когда оба модуля содержат директиву Elaborate_Body, отсутствие возможности определить правильный порядок элаборации очевидно.
Показанные выше директивы компилятора позволяют гарантировать клиентам безопасное использование серверов, и такой подход является предпочтительным.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий