我不知道Fortran模块中究竟是如何解析循环依赖关系的.以下模块使用ifort-2016和gfortran-4.9进行编译
module types
implicit none
type type1
type(type2), pointer :: t2
end type type1
type type2
type(type1) :: t1
integer :: x
end type type2
end module
Run Code Online (Sandbox Code Playgroud)
但如果我将定义顺序更改为
module types
implicit none
type type2
type(type1) :: t1
integer :: x
end type type2
type type1
type(type2), pointer :: t2
end type type1
end module
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
error #6457: This derived type name has not been declared. [TYPE1]
type(type1) :: t1
Run Code Online (Sandbox Code Playgroud)
ifort-2016和gfortran-4.9的行为相同.由于两个模块中存在类似的循环依赖性,为什么第一个编译但第二个不编译?