Pergunta
Alguém pode me fornecer exemplos simples de trabalho que ilustrem o uso de pragmas no Ada 2005?Entendo que os pragmas estão acostumados a processos de prioridades, mas não encontrei exemplos práticos!
Muito apreciado !
Solução
Uma pesquisa de comp.lang.ada
Para discussões recentes sobre priorities
tem vários exemplos interessantes. Este Parece particularmente aprovesso à sua pergunta.
Adendo: duas outras fontes exemplares são o Justificativa para Ada 95 e Justificativa para Ada 2005
Outras dicas
Um Ada Pragma é um recurso de idioma que permite ajustar ou ajustar o comportamento de um programa ADA. Vários Pragmas são definidos pelo padrão de idioma ADA, mas os fornecedores do compilador também podem definir o seu próprio.
O assunto de Pragmas cobre muito mais do que apenas prioridades do processo [TASKING], aqui está um Lista de Pragmas padrão e fornecidos por fornecedores para verificar.
O que exatamente você está tentando fazer com a ajuda de Pragmas? Definir prioridades de tarefas?
-- Not compile checked:
with System; use System;
task Prioritized_Task is
pragma Priority(System.Default_Priority + 1);
entry Start;
end Prioritized_Task;
Como em grande parte da ADA, acho que a melhor resposta aqui é realmente Consulte o LRM. o Seção sobre gerenciamento de prioridades de tarefas é realmente muito legível, para uma definição padrão de idioma de qualquer maneira.
Observe que você também pode Defina a prioridade de uma tarefa em tempo de execução sem uso de um Pragma. Isso faz uso do pacote Ada.Dynamic_Priorities
. É isso que normalmente faço hoje em dia, a menos que, por algum motivo estranho, a prioridade desejada seja conhecida no momento da compilação, e eu não me importo com codificação dura.
Eu sugiro que usuários avançados, como você, cutucam o LRM para ver o que todo o idioma fornece. Preste atenção especial aos anexos (as seções que começam com uma carta), pois é aí que a maioria das coisas boas está documentada. No seu caso, você provavelmente estará particularmente interessado no anexo em tempo real (anexo d).
Sim, vejo este usado frequentemente para calar o compilador sobre variáveis não referenciadas em um procedimento:
pragma Unreferenced(Variable);