如何使用可分配组件设置名为常量的派生类型的值? [英] How to set value of derived type named constant with allocatable component?

查看:0
本文介绍了如何使用可分配组件设置名为常量的派生类型的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编译正确:

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

没有为我提供任何有关正确语法的线索。

我没有收到任何关于尝试使用可分配类型声明参数变量的投诉,所以我假设一定有某种方法来初始化它!

推荐答案

我认为您的假设是错误的。2008标准明确禁止初始化可分配实体(R503/C506),我怀疑它也禁止初始化作为派生类型组件的可分配实体,尽管我找不到支持我的怀疑的章节。

这篇关于如何使用可分配组件设置名为常量的派生类型的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆