同时在维度 attr-spec 和 entity-decl 中声明 array-spec
Declaring array-spec in the dimension attr-spec and in entity-decl at the same time
此代码在 gfortran、Intel Fortran 和 Solaris Studio 中编译
real, dimension(:) :: A(2)
print *, size(A)
end
结果是2。
但是,当另一个 array-spec 在维度语句中尝试时
dimension A(1)
real :: A(2)
print *, size(A)
end
所有三个编译器都发出错误,指出维度属性被赋予了两次。
第一个代码标准是否符合标准以及标准(尽可能最新)对这种情况的具体说明是什么?
标准说:
类型声明语句中实体的数组规范覆盖同一语句中的任何 DIMENSION(...) 属性规范 (F2018 8.2p2) , 在确定语句指定什么作为实体的属性时。
一个属性不能指定两次(F2018 C815)。
第一个程序符合标准,行为符合标准;第二个不是,给定 C815。
这些规则从 Fortran 90 开始应用。C815 的等价物也在 F77 中,F66 在特征上是模棱两可的...
此代码在 gfortran、Intel Fortran 和 Solaris Studio 中编译
real, dimension(:) :: A(2)
print *, size(A)
end
结果是2。
但是,当另一个 array-spec 在维度语句中尝试时
dimension A(1)
real :: A(2)
print *, size(A)
end
所有三个编译器都发出错误,指出维度属性被赋予了两次。
第一个代码标准是否符合标准以及标准(尽可能最新)对这种情况的具体说明是什么?
标准说:
类型声明语句中实体的数组规范覆盖同一语句中的任何 DIMENSION(...) 属性规范 (F2018 8.2p2) , 在确定语句指定什么作为实体的属性时。
一个属性不能指定两次(F2018 C815)。
第一个程序符合标准,行为符合标准;第二个不是,给定 C815。
这些规则从 Fortran 90 开始应用。C815 的等价物也在 F77 中,F66 在特征上是模棱两可的...