带实际下标的带有矢量下标的Fortran INTENT属性

时间:2019-05-13 04:45:27

标签: fortran intel-fortran

the document about intent attribute

  

如果实际参数是带有向量下标的数组部分,则不能将其与已定义或重新定义的虚拟数组关联(具有OUT或INOUT的意图)。

我应该如何理解说明?

这是否意味着以下代码是错误的?

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

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

1 个答案:

答案 0 :(得分:1)

那很好,它是一个数组节而不是向量下标。后者是您在下标中使用一阶整数数组表达式的地方。扩展您的示例:

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