如何在 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
%