Jon*_*röm 5 arrays fortran gfortran
让所有例程都在模块内部。
如果我将数组real*8 aa(5,3)传递给例程
subroutine sub(bb)
real*8, intent(in) :: bb(2,5)
...
end subroutine
Run Code Online (Sandbox Code Playgroud)
用下面的语句call sub(aa),这将编译没有警告,前2 列的aa将填补bb阵列。数组aa和元素的bb排列方式非常不同。
如果相反,例程被编写
subroutine sub(bb)
real*8, intent(in) :: bb(:,:)
...
end subroutine
Run Code Online (Sandbox Code Playgroud)
然后bb将具有与相同的形状和存储顺序aa。
问:如果忘记了例程中存在显式大小的声明,则第一种行为是非常危险的。当显形数组更改形状/对齐方式时,我可以使编译器发出警告吗?
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |