是否有一种Ada等价物使函数未实现?

是否有一种Ada等价物使函数未实现?,ada,notimplementedexception,Ada,Notimplementedexception,在.Net中,开发过程中的常见做法是逐步实现接口,因此并非所有接口功能都在前几轮开发中实现。这样的示例在C中如下所示: public string FutureGetString() { // Not developed yet. throw new NotImplementedException(); } 然而,我还没有弄明白如何在Ada中实现等效。我想开发出一个包规格的身体,同时保持对一些功能的大门打开。有没有一种方法可以立即抛出异常?现在,我有以下内容,这给了我一个编译器

在.Net中,开发过程中的常见做法是逐步实现接口,因此并非所有接口功能都在前几轮开发中实现。这样的示例在C中如下所示:

public string FutureGetString()
{
    // Not developed yet.
    throw new NotImplementedException();
}
然而,我还没有弄明白如何在Ada中实现等效。我想开发出一个包规格的身体,同时保持对一些功能的大门打开。有没有一种方法可以立即抛出异常?现在,我有以下内容,这给了我一个编译器错误,函数体中缺少返回语句

函数未实现输入:在整数中返回布尔值为 pragma未引用输入; 开始 pragma Compile_Time_Warning True,Not_Implemented尚未实现。; 返回未执行的raise Program_错误,尚未执行。; 未实施的目的;
我看过一位高级AdaCore工程师推荐的:

function NotImplemented ( Input : Integer ) return Boolean is
begin
   raise Program_Error;
   return NotImplemented (Input);
end;

我想知道编译器是否会警告无限递归,但我的编译器似乎对此并不满意-函数返回时缺少表达式。2016年2月发布的技术勘误表1将raise表达式添加到Ada 2012中,因此,只有最新的编译器才会支持这一点,因为代码使用Ada2012特性,一个raise表达式,它可以有任何类型,我认为我们正在使用gnat 6.4,所以理论上它应该支持2012。我一定是在什么地方把它配置错了。-gnat2012通常是你用GNAT选择Ada 2012的方式。GNAT似乎无法区分Ada 2012和Ada 2012/TC1。
function NotImplemented ( Input : Integer ) return Boolean is
begin
   raise Program_Error;
   return NotImplemented (Input);
end;