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