如何初始化包含可分配数组的fortran派生类型参数变量?

时间:2015-09-30 21:55:49

标签: fortran gfortran fortran2003

这正确编译:

type t1
    integer :: a, b(2), c
end type t1
type(t1), parameter :: t1a = t1(1, [2, 3], 4)

我想写这样的东西,除了它没有编译:

type t2
    integer :: a
    integer, allocatable :: b(:)
    integer :: c
end type t2
type(t2), parameter :: t2a = t2(1, [2, 3], 4) ! compile error
type(t2), parameter :: t2b = t2(1, [2, 3, 4], 5) ! compile error

gfortran错误消息 Error: Invalid initialization expression for ALLOCATABLE component 'b' in structure constructor并没有给我任何关于正确语法的线索。

我没有抱怨尝试使用可分配类型声明参数变量,所以我假设必须有一些方式来初始化它!

1 个答案:

答案 0 :(得分:2)

我认为你认为错了。 2008标准明确禁止初始化可分配实体(R503 / C506),我怀疑它也禁止初始化可分配实体,这是派生类型的一个组成部分虽然我找不到章节和诗句来支持我的怀疑