无法指向 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
的详细信息,请参阅 .
我有一个函数 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
的详细信息,请参阅