Ада-95. Компилятор GNAT

         

Стандартные директивы Ады


Список стандартных директив компилятора Ады приводится в приложении L (Annex L) руководства по языку программирования Ада (RM-95).



All_Calls_Remote[(library_unit_name)]; Для выполнения вызова подпрограмм пакета всегда использовать механизм RPC (Remote Procedure Call - вызов удаленной подпрограммы)
   
Asynchronous(local_name);  -  Вызов подпрограммы производится асинхронно. При этом, активируется выполнение удаленной подпрограммы и, не дожидаясь её завершения, происходит продолжение выполнения вызвавшей подпрограммы.
   
Atomic(local_name);  -  Чтение/запись указанного объекта должно выполняться без прерываний
   
Atomic_Components(array_local_name);  -  Чтение/запись указанного массива компонентов должно выполняться без прерываний
   
Attach_Handler(handler_name, expression);  -  Установить процедуру обработки прерывания
   
Controlled(first_subtype, local_name);  -  Отключает "сборку мусора" для указанного типа данных.

(не имеет эффекта в реализации компилятора gnat)

   
Convention(
 [Convention =>] convention_identifier,
 [Entity=>] local_name);
 -  Использовать соответствующие языковые соглашения для указанного объекта
   
Discard_Names[([On =>] local_name)];  -  Отказаться от ASCII-представления объекта, которое используется атрибутом 'Img

   
Elaborate(
 library_unit_name{, library_unit_name});
 -  Предварительно выполнить элаборацию указанного пакета
   
Elaborate_All(
 library_unit_name{, library_unit_name});
 -  Предварительно выполнить элаборацию всех спецификаций и тел пакетов от которых зависит указанный модуль
   
Elaborate_Body[(library_unit_name)];  -  Выполнить элаборацию тела указанного модуля сразу после элаборации его спецификации
   
Export(

 [Convention =>] convention_identifier,

 [Entity =>] local_name[,

  [External_name =>] string_expression]

 [, [Link_Name =>] string_expression]);

 -  Экспортировать объект из Ада-программы для использования в другом языке программирования
   
   
Import(

 [Convention =>] convention_identifier,

 [Entity =>] local_name[,

  [External_name =>] string_expression]

 [, [Link_Name =>] string_expression]);

 -  Импортирует объект, описанный средствами другого языка программирования, для использования его в Ада-программе
   
   
Inline(name{, name});  -  Указывает подпрограмму при обращении к которой должна осуществляться встроенная подстановка машинного кода этой подпрограммы вместо выполнения стандартного вызова этой подпрограммы (так называемая inline-подстановка).
   
Inspection_Point
 [(object_name{, object_name})];
 -  В данной точке программы должна быть обеспечена возможность чтения значения указанного объекта (необходимо для сертификации правильности кода).
Interrupt_Handler(handler_name);  -  Указывает процедуру-обработчик прерывания
   
Interrupt_Priority([expression]);  -  Определяет приоритет задачи и/или защищенного объекта для случаев возникновения блокировки
Linker_Options(string_expression);  -  Передает строку опций для компоновщика (linker).
   
List(identifier);  -  Вывести листинг исходного текста после компиляции.
   
Locking_Policy(policy_identifier);  -  Определяет как защищенный объект будет заблокирован при возникновении блокировки.
   
Normalize_Scalars;  -  Устанавливать, когда это возможно, значения скалярных переменных в недопустимое значение
   
Optimize(identifier);  -  Указать как должны быть оптимизированы инструкции
   
Pack(first_subtype_local_name);  -  Указывает, что тип данных должен быть упакован
   
Page;  -  Указывает на начало новой страницы в листинге программы
   
Preelaborate(library_unit_name);  -  Указывает на необходимость предварительной элаборации указаанного пакета
   
Priority(expression);  -  Определяет приоритет задачи
   
Pure[(library_unit_name)];  -  Указывает, что пакет "чистый" (pure).
   
Queuing_Policy(policy_identifier);  -  Определяет правило сортировки задач и/или защищенных объектов при постановке в очередь.
Remote_Call_Interface[(library_unit_name)];  -  Подпрограммы пакета могут вызываться с использованием механизма RPC (Remote Procedure Call - вызов удаленной подпрограммы)
   
Remote_Types[(library_unit_name)];  -  Пакет определяет типы, предназначенные для использования совместно с механизмом RPC (Remote Procedure Call - вызов удаленной подпрограммы)
   
Restrictions(restriction{, restriction});  -  Отключает некоторые языковые средства.
   
Reviewable;  -  Предусматривает профилирование во время выполнения (подобно gprof).
   
Shared_Passive[(library_unit_name)];  -  Используется для совместного использования глобальных данных между разными RPC-разделами распределенной программы.
   
Storage_Size(expression);  -  Указывает общий размер пространства стека для задачи.
   
Suppress(identifier[, [On =>] name]);  -  Отключает специфические проверки для общих исключений.
   
Task_Dispatching(policy_identifier);  -  Определяет, для задачи, правила сортировки вызовов при диспетчеризации (например, FIFO_Within_Priorities).
   
Volatile(local_name);  -  Указывает, что значение переменной может изменяться в непредсказуемые моменты, вне зависимости от работы программы.
   
Volatile_Components(array_local_name);  -  Указывает, что значение массива компонентов может изменяться в непредсказуемые моменты, вне зависимости от работы программы.



Содержание раздела