我正在阅读一篇关于Ada编程更具体的文档,Ada for C Java开发人员,或者我遇到麻烦并理解并能够使用文档中给出的一些示例,其中一个是关于预处理的数据的
但是,当我编译该程序时,我只收到了一封Inf **消息
with Ada.Text_IO;
use Ada.Text_IO;
procedure main is
function Divisao(Left, Right : Float) return Float
with Pre => Right /= 0.0,
Post => Divisao'Result * Right < left + 0.0001
and then Divisao'Result * Right > Left - 0.0001
is
begin
return Left/Right;
end Divisao;
begin
Put_Line(Float'Image(Divisao(10.3,0.0)));
end main;
PS:在文档中,只有函数声明:
function Divisao(Left, Right : Float) return Float
with Pre => Right /= 0.0,
Post => Divisao'Result * Right < left + 0.0001
and then Divisao'Result * Right > Left - 0.0001;
这个系统预处理器不应该指出这个错误?
1 回答
通过ARM 11.4.2 (1.1),前置和后置条件是断言 . GNAT默认情况下不启用断言:您需要通过使用
-gnata
进行编译来启用它们 .