在Ada中,我有以下非常简单的代码,这让我很悲伤。我修剪下来的代码到最小,借以说明问题,你需要知道的唯一的事情就是Some_Task
是一个任务类型:Ada编译器:警告变量<X>被分配但从未读取
task body TB is
Task1 : Some_Task_Ref;
begin
Task1 := new Some_Task;
loop
Put_Line("Main loop is running, whatever...");
delay 5.0;
end loop;
end TB;
据我了解有关任务激活Ada中这应该是足够了:我创建一个类型为“Some_Task”的任务,我不必对它做任何事情,它将执行它的主循环,而无需任何干预。这不像在java中你必须调用任务对象上的“开始”方法。
但如果我是正确的,为什么编译器拒绝建立,给我的错误:
warning variable "Task1" is assigned but never read
我为什么要被迫“读”任务1?这是一项任务,它需要做的就是跑步......我错过了什么?
注意:这只有当我在“Gnat模式”(开关-gnatg
)中使用GNAT时才会发生。不幸的是,我需要一些高级编译指示这种模式,但它似乎引入了一些“overzelous”检查,如导致上述问题的检查。我怎样才能停用那张支票?
尝试禁用了使用'pragma'这个变量警告:'编译警告(关,Some_Task_Ref);' – Holt
或'Pragma Unreferenced(Task1);' –
@Holt:这工作,谢谢,虽然现在事实证明,即使这种修复它不起作用,但我会为此打开一个新的问题... –