我非常驚訝地發現,由於數組大小不匹配,使用gcc v。4.4.6構建的代碼無法運行。當使用gcc v。4.7.3構建時,它工作得很好。我創建了一個最小的工作爲例,說明問題的根源:此功能是否在最近的Fortran標準中提供?
program main
implicit none
integer, allocatable, dimension(:,:) :: array_a
integer, allocatable, dimension(:,:) :: array_b
allocate(array_a(5,2))
allocate(array_b(2,1))
array_a = 1
array_b = array_a
print *, array_a
print *, array_b
end program main
當用gcc 4.4.6 v建成,它在運行時錯誤崩潰:
At line 13 of file main.f90 Fortran runtime error: Array bound mismatch, size mismatch for dimension 1 of array 'array_b' (1/4)
當編譯用gcc v 4.7.3,它產生如下輸出:
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
注意,它會自動調整'array_b'的大小以匹配'array_a'的大小。這是一個由我看到的新的Fortran標準提供的'特性'嗎?