我希望此代码能够生成约束错误或打印正数。为什么这段代码也没有?
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;
答案 0 :(得分:7)
可能是因为您的编译器未配置为适当的Ada编译器。具体来说,旧版本的GNAT需要一个标志才能作为一个合适的Ada编译器。根据我的笔记,标志是:
-fstack-check -gnata -gnato