为什么在这里 ifort 和 gfortran 之间有不同的行为?使用 ifort 编译它返回 false,使用 gfortran 编译返回 true。我之前在自己的代码中遇到过这个问题,并决定改用子例程,但最近的一个问题让我质疑这种行为。

function allocateArray(size)
    integer, allocatable, dimension(:) :: allocateArray
    integer size

    allocate(allocateArray(size))

end function allocateArray

从主程序
integer, allocatable, dimension(:) :: a

a = allocateArray(10)
print *, allocated(a)

最佳答案

在版本 17.0.1 之前使用 ifort 进行编译时,编译器的默认行为是不使用 Fortran 规则进行内部赋值的自动分配。

您将需要使用 -assume realloc-lhs 之类的选项。

关于fortran - 可分配的数组值函数。 gfortran 与 ifort,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22313883/

10-11 16:51