Использование прагм в аде - PullRequest
2 голосов
/ 25 февраля 2010

Может ли кто-нибудь предоставить мне простые рабочие примеры, иллюстрирующие использование прагм в Аде 2005? Я понимаю, что прагмы используются для процессов приоритетов, просто я не сталкивался с рабочими примерами!

Очень ценится!

Ответы [ 4 ]

2 голосов
/ 25 февраля 2010

Как и в случае с большой частью Ады, я думаю, что лучший ответ здесь на самом деле - проконсультироваться с LRM . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1004*.

Обратите внимание, что вы также можете установить приоритет задачи во время выполнения без использования прагмы. Это делает использование пакета Ada.Dynamic_Priorities. Это то, чем я обычно занимаюсь в наши дни, если только по какой-то странной причине желаемый приоритет не известен во время компиляции, и я не возражаю против его жесткого кодирования.

Я настоятельно рекомендую продвинутым пользователям, таким как вы, просматривать LRM, чтобы увидеть, что вам дает весь язык. Обратите особое внимание на приложения (разделы, начинающиеся с буквы), так как именно здесь документируется большинство хороших вещей. В вашем случае вы, вероятно, будете особенно заинтересованы в приложении реального времени (Приложение D).

2 голосов
/ 25 февраля 2010

Ada pragma - это языковая функция, которая позволяет регулировать или тонко настраивать поведение программы Ada. Ряд прагм определяется стандартом языка Ada, но поставщики компиляторов также могут определять свои собственные.

Тема прагм охватывает гораздо больше, чем просто приоритеты [задач], вот список стандартных и предоставленных поставщиком прагм для проверки.

Что именно вы пытаетесь сделать с помощью прагм? Установить приоритеты задачи?

-- Not compile checked:
with System; use System;

task Prioritized_Task is
   pragma Priority(System.Default_Priority + 1);

   entry Start;

end Prioritized_Task;
1 голос
/ 27 февраля 2010

Поиск по comp.lang.ada для недавних обсуждений по поводу priorities имеет несколько интересных примеров. Этот кажется особенно подходящим для вашего вопроса.

Приложение: Два других примерных источника: Обоснование для Ады 95 и Обоснование для Ады 2005

0 голосов
/ 13 декабря 2011

Да, я вижу, что этот часто используется, чтобы отключить компилятор из-за переменных, на которые нет ссылок в процедуре:

pragma Unreferenced(Variable);
...