首页 文章

Ada的子程序 Contract

提问于
浏览
0

我正在阅读一篇关于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 回答

  • 3

    通过ARM 11.4.2 (1.1),前置和后置条件是断言 . GNAT默认情况下不启用断言:您需要通过使用 -gnata 进行编译来启用它们 .

相关问题