Ada 如何在我的程序中停止执行
如果不在这里复制粘贴代码,如果ADA程序将某个值计算为“X”,如何在运行时停止执行更多的代码行 比如:Ada 如何在我的程序中停止执行,ada,ada2012,Ada,Ada2012,如果不在这里复制粘贴代码,如果ADA程序将某个值计算为“X”,如何在运行时停止执行更多的代码行 比如: variable_name := variable_name +4; if variable_name >1 then // END program here and dont execute any lines under this one end if 我对编程并不陌生,但对ADA来说是个新手,所以找到正确的语法是一件痛苦的事情。有什么帮助吗 if variable_na
variable_name := variable_name +4;
if variable_name >1 then
// END program here and dont execute any lines under this one
end if
我对编程并不陌生,但对ADA来说是个新手,所以找到正确的语法是一件痛苦的事情。有什么帮助吗
if variable_name >1 then
raise PROGRAM_ERROR with "Aborted because ...";
end if;
我会照你说的做。这是否是你想要的是另一回事,你没有给我们足够的上下文来猜测
“abort”语句也可以使用,但它的正常作用是终止多任务程序中的任务
引发异常可能是最简单的,如果您不喜欢标准异常,您可以随时声明自己的异常。对于异常,您还可以在自己的异常处理程序中进行任何整理(如需要关闭文件)。有关详细信息,请参阅。没有任何特定的语法 如果您在主过程中,一个简单的
返回即可
Ada83兼容的答案是
只要你没有任何任务,这两个都可以
有一个Ada95 Rosetta代码解决方案,无论您是否有任务,它都会起作用:
with Ada.Task_Identification; use Ada.Task_Identification;
procedure Main is
-- Create as many task objects as your program needs
begin
-- whatever logic is required in your Main procedure
if some_condition then
Abort_Task (Current_Task);
end if;
end Main;
和特定于蚊虫的解决方案,也适用于以下任务:
with Ada.Text_IO; use Ada.Text_IO;
with GNAT.OS_Lib;
procedure Stopping is
procedure P is
begin
GNAT.OS_Lib.OS_Exit (0);
end P;
begin
Put_Line ("starting");
P;
Put_Line ("shouldn't have got here");
end Stopping;
为什么有人想开始执行ADA程序?“then return”怎么样?我相信这不是“abort”语句:您的示例源文本没有编译和运行。请告诉我们您至少做了那么多的努力。@GratusD.abort
语句与此无关。通常,停止程序是通过退出循环来完成的(或者通过编写一个while
循环,在完成时停止,或者通过使用exit
语句退出循环)。也可以通过从包含主循环的过程返回来完成。如果你的计算结果达到X是正常的,那么你想做其中一个——请不要试图从你的程序中找到“紧急出口”的方法,这将是一个可怕的实践。如果你真的需要一个紧急出口,请提供更多的细节,以便我能给出一个合适的答案。一个比我更好的答案。布赖恩你的工作为我很好,但感谢两个答案。干杯