【问题标题】:What is the difference between "stop" and "exit" in Fortran?Fortran 中的“停止”和“退出”有什么区别?
【发布时间】:2017-09-06 23:51:08
【问题描述】:

stopexit 在 Fortran 中有什么区别?

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

【问题讨论】:

    标签: fortran


    【解决方案1】:

    exit 在 Fortran 中是终止循环或完成其他构造执行的语句。然而,问题显然是关于非标准扩展,无论是作为函数还是子例程,由许多编译器提供,与stop 语句密切相关。

    比如gfortran offers这样的东西。

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

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

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

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

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

    通常在实践中,exit 将类似于 C 库的同名函数,其效果类似于 stop,没有停止代码(但仍将给定状态传递回操作系统)。

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

    【讨论】:

      【解决方案2】:

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

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

      stop 123
      

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

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

      call exit(123)
      

      退出的参数会作为状态返回给父进程

      【讨论】:

        猜你喜欢
        • 2018-02-08
        • 1970-01-01
        • 2013-03-11
        • 2016-07-29
        • 2011-08-15
        • 2011-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多