在维度attr-spec和entity-decl中同时声明array-spec

问题描述 投票:2回答:1

此代码在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

所有三个编译器都会发出一个错误,即维度属性被赋予了两次。

第一个代码标准是否符合标准(尽可能最近)的标准是什么?

arrays fortran language-lawyer gfortran intel-fortran
1个回答
2
投票

标准说:

  • 当确定语句指定为实体的属性时,类型声明语句中的实体的数组规范将覆盖同一语句(F2018 8.2p2)中的任何DIMENSION(...)属性规范。
  • 属性不能指定两次(F2018 C815)。

第一个程序符合标准,按照标准观察行为;鉴于C815,第二个不是。

这些规则自Fortran 90开始应用。相当于C815也在F77中,F66特征模糊不清......

© www.soinside.com 2019 - 2024. All rights reserved.