Types 如何在Ada中声明整型类型的整个负范围的子类型?
如果我想声明一个纯正整数类型,我需要做的就是:Types 如何在Ada中声明整型类型的整个负范围的子类型?,types,ada,Types,Ada,如果我想声明一个纯正整数类型,我需要做的就是: 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 为什么会出现此
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
为什么会出现此错误,以及如何声明仅为负值的子类型?您的问题可能是由于某个地方的输入错误,因为您的确切示例很好:
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
%
您的问题可能是由于某个地方的打字错误,因为您的确切示例很好:
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
%
您的
Negative
子类型包括两个非负值。不应该先Integer
给我Integer
类型的最低值吗?是的,但您的子类型包括0
和1
值。如果您只需要负值,则首先需要Integer'-1
。您的负
子类型包括两个非负值。是否应首先整数
为我提供整数
类型的最低值?是的,但您的子类型包括值0
和1
。如果您只需要负值,则首先需要Integer'-1
。发现错误,忘记在代码中提及范围
。谢谢。爱德华,如果你一开始就公布了你的实际代码,你会更快地得到答案。发现错误,忘了在代码中提到range
。谢谢。爱德华,如果你一开始就公布了你的实际代码,你会更快地得到答案。