【发布时间】:2017-09-06 23:51:08
【问题描述】:
stop 和 exit 在 Fortran 中有什么区别?
两者都可以通过一些错误信息立即终止程序。
【问题讨论】:
标签: fortran
stop 和 exit 在 Fortran 中有什么区别?
两者都可以通过一些错误信息立即终止程序。
【问题讨论】:
标签: fortran
exit 在 Fortran 中是终止循环或完成其他构造执行的语句。然而,问题显然是关于非标准扩展,无论是作为函数还是子例程,由许多编译器提供,与stop 语句密切相关。
比如gfortran offers这样的东西。
由于exit 的这种使用是非标准的,您应该参考特定实现的文档来了解它采用什么形式以及它具有什么效果。
另一方面,stop 语句是标准的 Fortran 语句。此语句启动 Fortran 程序执行的正常终止(并且可以与启动错误终止的error stop 语句进行比较。
除了知道程序的终止(通常)执行遵循stop 语句并且存在停止代码之外,实际发生的方式再次对实现保持开放。对于会发生什么,有一些建议(但这些只是建议)。例如,在 Fortran 2008 中建议
上述内容相当模糊,因为在许多情况下上述概念并不适用。
通常在实践中,exit 将类似于 C 库的同名函数,其效果类似于 stop,没有停止代码(但仍将给定状态传递回操作系统)。
总之,Fortran 没有描述stop 和exit 之间的区别。使用exit(用于终止)是不可移植的,甚至stop 的效果也没有完全定义。
【讨论】:
stop 是一个 fortran 语句,但 exit 是一个恰好终止程序的函数。
stop 语句会将其参数 [也可以是字符串] 输出到 stderr
stop 123
它会向父进程返回零状态。
而exit 是一个函数,必须像其他函数一样调用。它也会保持沉默(即没有消息):
call exit(123)
退出的参数会作为状态返回给父进程
【讨论】: