Fortran中“stop”和“exit”的区别是什么?

27

stopexit 在Fortran中有什么不同?

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

2个回答

25
在Fortran中,exit是一条语句,用于终止循环或完成其他结构的执行。然而,这个问题显然是关于许多编译器提供的非标准扩展——函数或子程序——与stop语句密切相关的问题。
例如,gfortran就提供了这样一个东西。
由于这种使用exit是非标准的,您应该参考特定实现的文档以了解它采用的形式和产生的效果。
另一方面,stop语句是标准的Fortran语句。这个语句启动Fortran程序的正常终止(可以与error stop语句进行比较,后者启动错误终止)。
除了知道终止(正常)执行程序遵循stop语句以及存在停止代码之外,实际发生的方式再次留给了实现。有一些建议(但这些只是建议)关于会发生什么。例如,在Fortran 2008中,建议:
  • 停止代码(可以是整数或字符串)被打印到“错误”单元;
  • 如果停止代码是整数,则将其用作进程退出状态;
  • 如果没有停止代码(或者它是字符),则返回零作为退出状态。
上述内容相当模糊,因为在许多情况下,上述概念并不适用。
通常在实践中,exit类似于C库的同名函数,其效果类似于没有停止代码的stop(但仍将给定状态传回操作系统)。

总之,Fortran没有明确区分stopexit的不同之处。使用exit(用于终止)是不可移植的,即使stop的效果也并非完全定义。


11

stop是一种Fortran语句,而exit则是一个函数,只是恰好终止程序。

stop语句将其参数(也可以是字符串)输出到stderr。

stop 123

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

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

call exit(123)

而 exit 的参数将作为状态返回给父进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接