Объявление array-spec в измерении attr-spec и в entity-decl одновременно - PullRequest
2 голосов
/ 13 марта 2019

Этот код компилируется в 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

все три компилятора выдают ошибку, что атрибут измерения был задан дважды.

Соответствует ли первый стандарт кода и что именно стандарт (как можно более свежий) говорит об этой ситуации?

1 Ответ

2 голосов
/ 13 марта 2019

Стандарт гласит:

  • спецификация массива для объекта в операторе объявления типа переопределяет любую спецификацию атрибута DIMENSION (...) в этом же операторе (F2018 8.2p2), при определении того, что инструкция указывает в качестве атрибута для объекта.

  • атрибут не может быть указан дважды (F2018 C815).

Первая программа соответствует поведению, наблюдаемому в соответствии со стандартом;второе - нет, учитывая C815.

Эти правила применяются начиная с Fortran 90. Эквивалент C815 есть и в F77, F66 характерно неоднозначно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...