为什么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)
答案 0 :(得分:6)
在版本17.0.1之前使用ifort进行编译时,默认行为是编译器不要使用Fortran规则对内部赋值进行自动分配。
您需要使用-assume realloc-lhs
等选项。