在Ada中使用Pragma

时间:2010-02-25 11:59:27

标签: ada task pragma

有人能为我提供简单的工作实例,说明在Ada 2005中使用编译指示吗?我知道pragma用于优先级流程,只是我没有遇到过工作示例!

非常感谢!

4 个答案:

答案 0 :(得分:2)

Ada pragma是一种语言功能,可以调整或微调Ada程序的行为。许多编译指示由Ada语言标准定义,但编译器供应商也可以定义自己的。

pragma的主题远不只是处理[任务]优先级,这里有list标准和供应商提供的pragma来检查。

你究竟在尝试使用pragma做什么?设置任务优先级?

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

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

   entry Start;

end Prioritized_Task;

答案 1 :(得分:2)

与Ada的大部分内容一样,我认为这里的最佳答案实际上是consult the LRM。对于语言标准定义,section on managing task priorities实际上非常易读。

请注意,您也可以在不使用编译指示的情况下set the priority of a task at runtime。这使用了包Ada.Dynamic_Priorities。这就是我现在通常所做的事情,除非出于某种奇怪的原因,在编译时知道所需的优先级,我不介意对其进行硬编码。

我强烈建议像您这样的高级用户通过LRM查看所有语言为您提供的内容。特别注意附件(以字母开头的部分),因为这是大多数好东西都记录在案的地方。在您的情况下,您可能会对实时附件(附录D)特别感兴趣。

答案 2 :(得分:1)

搜索comp.lang.ada最近有关priorities的讨论有几个有趣的例子。 This one似乎特别适合你的问题。

附录:另外两个示例性来源是Rationale for Ada 95Rationale for Ada 2005

答案 3 :(得分:0)

是的,我看到这个经常被用来关闭程序中关于未引用变量的编译器:

pragma Unreferenced(Variable);