在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:這工作,謝謝,雖然現在事實證明,即使這種修復它不起作用,但我會爲此打開一個新的問題... –