谁能给我提供简单的工作示例来说明 Ada 2005 中编译指示的使用?我知道编译指示用于优先处理过程,只是我没有遇到工作示例!
非常感激 !
Ada pragma 是一种语言功能,允许调整或微调 Ada 程序的行为。Ada 语言标准定义了许多 pragma,但编译器供应商也可以定义自己的。
pragma 的主题不仅仅涵盖进程 [tasking] 优先级,这里有一个标准和供应商提供的 pragma列表供您查看。
您究竟想借助 pragma 做什么?设置任务优先级?
-- Not compile checked:
with System; use System;
task Prioritized_Task is
pragma Priority(System.Default_Priority + 1);
entry Start;
end Prioritized_Task;
与 Ada 的大部分内容一样,我认为这里最好的答案是咨询 LRM。无论如何,对于语言标准定义,关于管理任务优先级的部分实际上非常易读。
请注意,您还可以在运行时设置任务的优先级,而无需使用 pragma。这利用了 package Ada.Dynamic_Priorities
。这是我这些天通常做的事情,除非出于某种奇怪的原因,在编译时就知道所需的优先级,而且我不介意对其进行硬编码。
我强烈建议像您这样的高级用户浏览 LRM,看看所有语言都为您提供了什么。请特别注意附件(以字母开头的部分),因为这是记录大部分好东西的地方。就您而言,您可能会对实时附件(附件 D)特别感兴趣。
搜索comp.lang.ada
最近的讨论priorities
有几个有趣的例子。这似乎特别适合您的问题。
附录:另外两个示例性来源是Ada 95的基本原理和Ada 2005的基本原理
是的,我看到这个经常被用来关闭编译器关于过程中未引用的变量:
pragma Unreferenced(Variable);