Fortran中"stop"和"exit"之间的区别是什么?

Ter*_*iao 17 fortran

stop和exitFortran有什么区别?

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

fra*_*lus 15

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

例如,gfortran提供了这样的东西.

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

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

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

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

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

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

总之,Fortran没有描述stop和之间的区别exit.的使用exit(终止)是不可移植和连效果stop并不完全限定.


Cra*_*tey 8

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

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

stop 123
Run Code Online (Sandbox Code Playgroud)

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

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

call exit(123)
Run Code Online (Sandbox Code Playgroud)

并且exit的参数将作为status返回给父进程