我不知道我是击中编译器错误还是丢失了某些内容。我正在尝试运行以下代码:
program test
implicit none
integer, parameter :: dp=kind(1.d0)
integer, allocatable :: int_mat(:,:)
integer, allocatable :: int_mat_2(:,:)
real(dp), allocatable :: real_mat(:,:)
allocate(int_mat(2,2))
int_mat = 0
int_mat_2 = int_mat
real_mat = int_mat ! Falls over here.
end program
使用nagfor (flags: -f2003 -C=all)
编译和运行,按预期工作。与gfortran (flags: -std=f2003 -fcheck=all)
一起编译和运行,在运行时失败,错误消息:
At line 13 of file test.f90
Fortran runtime error: Array bound mismatch for dimension 1 of array 'real_mat' (1/2)
我希望代码成功,因为int_mat_2
和real_mat
应该被隐式分配。对于int_mat_2
,这似乎正确地发生了,但对于real_mat
。
我已经使用了各种Gfortran版本(5.4、6.3、7.0)尝试了此问题,并且都有相同的问题。
,这是Francescalus发现的,这是该编译器错误,此后已为最近的Gfortran版本修复。