gfortran抱怨可分配组件的结构构造函数中元素的等级

时间:2018-10-09 01:48:56

标签: fortran gfortran

考虑以下代码:

subroutine tao_show_this ()
implicit none

type b_struct   
integer, pointer :: good_user => null()
end type

type a_struct   
 type (b_struct), allocatable :: value_ptr(:)
end type

type (a_struct) a
a = a_struct()

end subroutine

使用gfortran 5或7进行编译会得出:

gfortran -c test.f90
test.f90:4:13:

 type b_struct
             1
Error: The rank of the element in the structure constructor at (1) does not match that of the component (0/1)

此代码使用ifort可以正常编译。这是gfortran错误还是我的代码有问题?

1 个答案:

答案 0 :(得分:1)

对于默认结构构造函数,Fortran 2008中引入了一项功能,即可以忽略可分配组件的值。

gfortran具有not currently support this feature(“未实现的功能”)。

要保留未分配的组件,同时仍给构造函数赋值的一种引用null

a = a_struct(NULL())