gpt4 book ai didi

fortran - 在 Fortran 中初始化参数化派生类型的参数大小数组?

转载 作者:行者123 更新时间:2023-12-03 17:11:56 26 4
gpt4 key购买 nike

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 错误消息所述,具有初始化表达式的组件的数组边界必须是常量表达式(这是 Fortran 2018 的约束 C762)。长度类型参数不能用作常量表达式。

没有其他语法可以为组件指定默认值。

kind 类型参数可以在常量表达式中出现,因此具有由该类型的 kind 参数给出的边界的组件可以具有默认初始化。

关于fortran - 在 Fortran 中初始化参数化派生类型的参数大小数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62005934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com