我惊讶地发现,由于数组大小不匹配,使用 gcc v. 4.4.6 构建的代码无法运行。使用 gcc v. 4.7.3 构建时效果很好。我创建了一个最小的工作示例来显示问题的根源:
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 v. 4.4.6 构建时,它在运行时崩溃并出现错误:
在文件 main.f90 Fortran 运行时错误的第 13 行:数组绑定不匹配,数组 'array_b' (1/4) 的维度 1 的大小不匹配
当使用 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 标准提供的“功能”吗?