2010-02-25 49 views
2

任何人都可以提供簡單的工作示例來說明Ada 2005中編譯指示的用法嗎?我明白,編譯指示被用於優先級過程,只是我沒有遇到過工作示例!在Ada中使用編譯指示

非常感謝!

+0

嗯。你只是在問關於處理任務的編譯指示嗎?我可以建立一個更有用的答案,圍繞... – 2010-02-25 15:31:38

回答

1

搜索comp.lang.ada最近有關priorities的討論有幾個有趣的例子。 This one似乎特別適合你的問題。

附錄:其他兩個示範性來源是Rationale for Ada 95Rationale for Ada 2005

+0

感謝trashgod,不錯的鏈接! – Arkapravo 2010-02-28 08:58:09

+0

優秀;這是一個典型的羣體,僅次於LRM。請考慮接受其中一個答案,並可能對您認爲有用的任何內容進行投票。 – trashgod 2010-02-28 14:16:40

+0

最後一個鏈接只有在Linux下運行時纔有意義。在Windows上,不需要管理員更改優先級(雖然你確實需要它來打在上面的優先級,這可能使機器反應遲鈍,如果你進入一個死循環)。雖然很高興知道。 – 2010-03-01 14:08:31

2

Ada雜注是一種語言功能,可以調整或微調Ada程序的行爲。 Ada語言標準定義了許多編譯指示,但編譯器供應商也可以定義它們自己的編譯指示。

編譯指南的主題不僅僅是處理[任務]優先級,這裏有一個list標準和供應商提供的編譯指示來檢查。

你到底在編譯指示的幫助下做了什麼?設置任務優先級?

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

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

    entry Start; 

end Prioritized_Task; 
+0

嗨馬克.... 我打算做一個程序,將打印5'A的5'B和5'C(3個工作,每個不同優先級),根據它們給定的優先順序,通過編譯指示,改變編譯指示會改變它們的印刷順序。這種例子可能會展示編譯指示的效用。 – Arkapravo 2010-02-25 13:48:22

2

與許多Ada一樣,我認爲最好的答案是consult the LRM。無論如何,section on managing task priorities實際上是非常可讀的,對於語言標準定義。

請注意,您也可以在不使用附註的情況下使用set the priority of a task at runtime。這使用包Ada.Dynamic_Priorities。這是我現在通常所做的,除非出於某種奇怪的原因,在編譯時已知所需的優先級,我不介意對它進行硬編碼。

我強烈建議高級用戶(如您自己)通過LRM查看所有語言爲您提供的內容。特別要注意附件(以字母開頭的部分),因爲這是大部分好東西都記錄在案的地方。就你而言,你可能會對實時附件(附件D)特別感興趣。

+0

嗨T.E.D,謝謝你的回覆! ....我已經通過LRM和很多其他的東西....很遺憾,我還沒有一個「簡單的工作示例」,它說明了編譯指示如何優先考慮給定的一組任務.... ..我尤其對編譯指示很感興趣,因爲使用信號燈編程確實變得有點麻煩! ...如果你有任何簡單的說明性工作示例,那麼這對我來說將是一個很大的幫助! – Arkapravo 2010-02-26 05:16:48

0

是的,我認爲這是一個經常使用的關閉編譯器約佔未引用變量的過程:

pragma Unreferenced(Variable);