【发布时间】:2020-05-25 15:41:59
【问题描述】:
Fortran 允许参数化派生类型元素的大小。但是,在类型声明中可以为固定大小的元素分配默认值的情况下,似乎没有办法用于参数化条目:
PROGRAM main
IMPLICIT NONE
TYPE data1
INTEGER :: array(5) = 2 ! allowed
END type data1
TYPE data2(n)
INTEGER, LEN :: n
INTEGER :: array(n) = 2 ! incorrect: error #8737 with intel fortran 19,
END type data2 ! ignored by gfortran 8.2.1
END PROGRAM main
分配默认值很方便,因为它可以避免每次使用类型时都重复初始化,但对于参数大小的字段,这是不允许的; Gfortran 只是默默忽略默认值,Intel Fortran 报错
error #8737: For a default initialized component every type parameter and array bound
must be a constant expression. [ARRAY]
是否有任何语法允许定义默认值?
【问题讨论】:
标签: fortran