fortran - 派生类型的空数组
问题描述
如何正确编写用户派生类型的空数组文字?
以下适用于 GFortran,但不适用于 IFort 版本 19.1.1.217
type(SpinOrbIdx_t), allocatable :: det_I(:)
det_I = [SpinOrbIdx_t::]
这是 ifort 中的错误,还是 GFortran 的不符合标准的行为?
解决方案
这确实是声明构造(零大小)数组类型的正确语法。英特尔 Fortran 拒绝将此作为 Fortran 2003+ 语法是错误的:您应该将此报告给英特尔支持。
在 Fortran 2018 中,这是语法规则 R770(带有 R769 和其他上下文)。
作为一种解决方法,您可以分配det_I
为零大小或使用没有元素的结构构造函数的数组构造函数:
allocate(det_I(0))
det_I = [(SpinOrbIdx(...),i=1,0)] ! For appropriate structure constructor, etc.
推荐阅读
- python - 如何将我的 emailpass[0] 和 emailpass[1] 放在 request.get url 上?
- java - 如何生成随机实数列表
- html - 使用 svg dashoffset/dasharray 按 360 度的百分比绘制一个圆
- jquery - 根据纯文本数字打开/关闭复选框
- python - Python在嵌套字典中搜索键/值
- r - 如何使用 R 中的列表条目有效地设置矩阵的值?
- c++ - 如何处理已经存在的密钥的插入?
- vba - MS Access 仅在更改特定方法时停止工作
- docker - 无法为旧版本(标签)的 postgres 找到 dockerfile
- coq - 归纳策略的 case_eq 等价物是什么?