无法指向 returns 数组的 Fortran 函数

Unable to point to a Fortran function that returns an array

我有一个函数 returns 一个数组并且工作正常但我无法指向它。我使用与采用相同参数(实数和派生类型)的标量结果函数成功使用的相同指针声明和赋值。声明是

  PROCEDURE( REAL(idp) ), POINTER, NOPASS :: GradSingleState

指向

  this % GradSingleState => GradSingleWell

当我尝试使用 gfortran 进行编译时,我收到错误消息

       this % GradSingleState => GradSingleWell
      1 Error: Explicit interface required for ‘’ at (1): array result

当我用 Intel 编译然后运行它时,它崩溃了。

正如我们所知,当引用一个具有数组结果的函数时,有必要为该函数提供一个显式接口。您的编译器抱怨这里没有可用的显式接口,因为对于过程指针有类似的要求。

如果GradSingleWell有一个数组结果(要求在引用时有一个显式接口可用)那么指针本身也必须有一个显式接口。但是,在声明中

PROCEDURE( REAL(idp) ), POINTER, NOPASS :: GradSingleState

过程指针具有隐式接口(并且具有标量结果而不是数组结果)。

要解决这个问题,需要给指针 GradSingleState 一个明确的(和匹配的)接口:

PROCEDURE(iface), POINTER, NOPASS :: GradSingleState

其中 iface 是接口名称。有关如何定义 iface 的详细信息,请参阅 .