我想比较两个子类型的最小值,最大值。在Ada语言中,可以在两个不同的子类型之间进行分配,例如
procedure Example_1 is
subtype Type_1 is Integer range 0 .. 10;
subtype Type_2 is Integer range 0 .. 30;
A : Type_1 := 0;
B : Type_2 := 12;
begin
A := B;
end Example_1;
在运行时A := B
会给出范围溢出错误。在ASIS中,是否可以比较子类型,子类型的最小值/最大值(整数,实数,枚举类型),以便在运行时识别溢出问题?
答案 0 :(得分:2)
使用-gnatVa -gnat12编译时,编译器检测到此问题
答案 1 :(得分:1)
是的,可以使用ASIS进行检查。
有关如何提取子类型的'First
和'Last
的信息,请参见the answer to this question。