为什么此代码不会生成约束错误或打印正数?

时间:2018-01-17 05:28:45

标签: ada

我希望此代码能够生成约束错误或打印正数。为什么这段代码也没有?

WITH ADA.TEXT_IO;
USE  ADA.TEXT_IO;

PROCEDURE OVERFLOW IS
    PROCEDURE P (I: POSITIVE) IS
        X: INTEGER := INTEGER'LAST;
    BEGIN
        X := (X + I) / 2;
        PUT_LINE (INTEGER'IMAGE (X) & " SHOULD BE POSITIVE");
    END;
BEGIN
    P(10);
END;

1 个答案:

答案 0 :(得分:7)

可能是因为您的编译器未配置为适当的Ada编译器。具体来说,旧版本的GNAT需要一个标志才能作为一个合适的Ada编译器。根据我的笔记,标志是:

-fstack-check -gnata -gnato