Атрибут Fortran INTENT с фактическим аргументом с векторным индексом - PullRequest
2 голосов
/ 13 мая 2019

документ о intent атрибуте говорит

Если фактическим аргументом является раздел массива с векторным индексом, он не может быть связан с фиктивным массивом, который определен или переопределен (имеет намерение OUT или INOUT).

Как понимать описание?

Означает ли это, что следующий код неверен?

subroutine sub(a)
    real, intent(out) :: a(:)
end subroutine sub

real :: arr(3,4)
call sub(arr(1,:))

1 Ответ

1 голос
/ 13 мая 2019

Это нормально, это секция массива, а не векторный индекс.Во втором случае для индексов используется целочисленное выражение массива ранга один.Расширяем ваш пример:

subroutine sub(a)
    real, intent(out) :: a(:)
end subroutine sub

real :: arr(3,4)
call sub(arr(1,:))           ! Legal
call sub(arr(1,[ 1, 2, 4 ] ) ! Illegal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...