我正在尝试从fortran函数返回一个类型。这是代码。
module somemodule
implicit none
! define a simple type
type sometype
integer :: someint
end type sometype
! define an interface
interface
! define a function that returns the previously defined type
type(sometype) function somefunction()
end function somefunction
end interface
contains
end module somemodule
在gfortran(4.4& 4.5)中,我收到以下错误:
错误:无法访问(1)中'somefunction'功能的类型
我将文件编译为:
gfortran -c ./test.F90
我尝试将该类型明确公开,但这没有帮助。我打算使用某个功能的c版本,这就是我把它放在界面部分的原因。
为什么类型无法访问?
答案 0 :(得分:5)
在函数定义中添加 import 可修复此问题。由于许多人认为语言设计中存在错误,因此定义不会在接口内部继承。 “导入”会覆盖这一点以实现合理的行为。
interface
! define a function that returns the previously defined type
type(sometype) function somefunction()
import
end function somefunction
end interface
答案 1 :(得分:3)
为什么它无法访问的问题的答案是标准委员会就是这样设计的。该接口具有与封闭模块不同的范围,因此您必须从中显式导入名称。显然(?)你不能use
内部的模块,所以需要import
语句。