2016-08-18 44 views
0

如果我想聲明一個積極的只有整數類型,我需要做的是這樣的:如何在Ada中聲明一個Integer類型的整個負範圍的子類型?

 subtype Positive is Integer range 0..Integer'Last; 

我想我可以套用同樣的邏輯來聲明一個被動型是這樣的:

 subtype Negative is Integer range Integer'First..1; 

然而,在編譯時我得到這個錯誤:

attribute "First" may not be used in a subtype mark 

爲什麼會出現這種錯誤,以及如何我宣佈一個負僅亞型?

+3

你'Negative'亞型包括兩個非負值。 –

+0

不應該'Integer'First'給我'Integer'類型的最低值? –

+3

是的,但您的子類型包含值'0'和'1'。如果你只想要負值,你需要'Integer'First .. -1'。 –

回答

3

你的問題可能是由於一個錯字的地方,因爲你確切的例子是罰款:

package SO is 
    subtype Negative is Integer range Integer'First..1; 
end SO; 

編譯:

% gnatmake so.ads 
gcc-4.9 -c -gnata -gnato -fstack-check -gnat12 -gnatyO -gnatv -gnati1 -gnatf -gnatn so.ads 

GNAT 4.9.2 
Copyright 1992-2014, Free Software Foundation, Inc. 

Compiling: so.ads (source file time stamp: 2016-08-19 05:05:16) 
3 lines: No errors 
% 
+0

發現錯誤,忘記在代碼中提及'範圍'。謝謝。 –

+1

愛德華,如果你已經在第一個地方發佈了你的實際代碼,你將會得到更快的答案。 –

相關問題