假设我有一个接受两个数组作为输入的子程序。一个被赋予intent(in),另一个被赋予intent(out)。后者以任意方式从前者派生而来。但是,如果我为两个虚拟参数传递相同的实际参数怎么办?通常,结果不会是子例程的预期结果。请参阅下面的代码片段。
问题是,编译器似乎并不关心,即使我已经给出了意图标志。我正在使用带有所有诊断功能的 Intel Visual Fortran Composer 12。有没有更好的编码子例程的方法,或者我缺少的一些编译器选项,以使代码更安全?
module foo
contains
subroutine sub_a()
implicit none
real::array(10,10)
call sub_b(array,array)
end subroutine
subroutine sub_b(array1,array2)
implicit none
real,intent(in)::array1(10,10)
real,intent(out)::array2(10,10)
!array2 is derived from array1 somehow
end subroutine
end module foo