【问题标题】:Meaning of this statement in FortranFortran 中这条语句的含义
【发布时间】:2014-04-09 19:10:43
【问题描述】:

我正在查看 ponder lab 的 tinker 分子动力学包中的一些代码: http://dasher.wustl.edu/tinker/.

我在其中一个文件 alchemy.f 中看到了这句话:

    program alchemy
     ...
     ...
     some statements here and there
     ...
     ...
     integer ixyz
     integer freeunit
     ...

然后有这个令人费解的说法

    ixyz = freeunit ()

   ...

由于这两个变量都是整数类型的标量,我不确定括号的含义。

谢谢,

【问题讨论】:

    标签: fortran physics fortran77 fortran95


    【解决方案1】:

    声明

    integer freeunit
    

    可能,尤其是在旧代码中,不声明一个整数标量变量,而是一个返回整数的函数。通常,该函数将在另一个编译单元中定义,并且它在程序中的声明为链接器提供了足够的工作来完成它的工作。

    如果是这样的话

    ixyz = freeunit ()
    

    将被解释为对该函数的无参数调用。

    搜索您的源文件中包含的行

    integer function freeunit 
    

    请注意,我在这里做出有根据的猜测,我从不遵循远离 SO 安全的链接。我将进一步猜测函数freeunit 返回一个尚未使用的 i/o 单元号。

    【讨论】:

    • 你猜对了,我为 function(.*)freeunit 寻找并在 freeunit.f 中找到了一个声明,它似乎包含 iounit.i
    【解决方案2】:

    其他用户已经提供了更完整的答案。在您的问题中,括号表示一个函数。特别是整数类型。外部函数声明函数的类型和名称,并列出参数。

     type FUNCTION fname(arg11, arg2, …, argn)
    

    函数类型的数据类型指定外部函数返回值的数据类型。如果省略,则返回的数据类型由符号名 fname 的首字母决定。

    在您的代码中,freeunit () 是一个整数函数,它返回一个整数值。整数 ixyz 表示已声明整数类型的变量。

    声明

        ixyz=freeunit ()
    

    表示将freeunit()返回的整数值赋给ixyz。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-23
      • 2021-06-01
      • 2014-05-16
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多