"停止"之间有什么区别?和"退出"在Fortran?

时间:2015-12-26 22:13:20

标签: fortran

Fortran中的if(isset($_GET['ref'])){ $website_ref_code = $_GET['ref']; } if(isset($_GET['id'])){ $website_id_code = $_GET['id']; } stop之间有什么区别?

两者都可以使用一些错误信息立即终止程序。

2 个答案:

答案 0 :(得分:12)

Fortran中的

exit是一个语句,它终止循环或完成其他结构的执行。但是,问题显然是关于非标准扩展,作为函数或子例程,由许多编译器提供,与stop语句密切相关。

例如,gfortran offers这样的事情。

由于exit的使用是非标准的,因此您应该参考特定实现的文档,了解它采用何种形式以及它具有哪些效果。

另一方面,stop语句是标准的Fortran语句。此语句启动正常终止执行Fortran程序(并且可以与启动错误终止的error stop语句进行比较。

除了知道程序的终止(正常)执行遵循stop语句并且存在停止代码之外,实际发生的实际方式再次对实现保持开放。关于会发生什么,有一些建议(但这些只是建议)。例如,在Fortran 2008中建议

  • 将停止代码(可以是整数或字符串)打印到“错误”单元;
  • 如果停止代码是整数,则将其用作进程退出状态;
  • 如果没有停止代码(或者它是一个字符),则返回零作为退出状态。

上述内容相当模糊,因为在许多情况下,上述概念不适用。

通常在实践中,exit将类似于C库的该名称的功能,其效果将类似于stop而没有停止代码(但仍然将给定状态传递回OS)

总之,Fortran没有描述stopexit之间的区别。使用exit(终止)是不可移植的,甚至stop的效果也没有完全定义。

答案 1 :(得分:5)

stop是一个fortran语句,但exit是一个恰好终止程序的函数。

stop语句将其参数[也可以是字符串]输出到stderr

stop 123

它将向父进程返回零状态。

exit是一个函数,必须像其他函数一样调用。它也将是沉默的(即没有消息):

call exit(123)

并且退出的参数将作为状态

返回到父进程