这正确编译:
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
并没有给我任何关于正确语法的线索。
我没有抱怨尝试使用可分配类型声明参数变量,所以我假设必须有一些方式来初始化它!
答案 0 :(得分:2)
我认为你认为错了。 2008标准明确禁止初始化可分配实体(R503 / C506),我怀疑它也禁止初始化可分配实体,这是派生类型的一个组成部分虽然我找不到章节和诗句来支持我的怀疑