如何在 Ada 中声明一个整数类型的整个负数范围的子类型?
How to declare a subtype with a the whole negative range of Integer type in 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
为什么会出现此错误,我如何才能声明一个仅负的子类型?
您的问题可能是某处的拼写错误,因为您的确切示例很好:
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
%
如果我只想声明一个正整数类型,我需要做的就是:
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
%