小编cre*_*ndo的帖子

Fortran模块中类型之间的循环依赖关系

我不知道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的行为相同.由于两个模块中存在类似的循环依赖性,为什么第一个编译但第二个不编译?

fortran module

4
推荐指数
1
解决办法
659
查看次数

标签 统计

fortran ×1

module ×1