有人能为我提供简单的工作实例,说明在Ada 2005中使用编译指示吗?我知道pragma用于优先级流程,只是我没有遇到过工作示例!
非常感谢!
答案 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 95和Rationale for Ada 2005
答案 3 :(得分:0)
是的,我看到这个经常被用来关闭程序中关于未引用变量的编译器:
pragma Unreferenced(Variable);