以下代码在 Linux 系统上使用 pgf90 编译时出现段错误,而在 Windows 上使用 Intel Visual FORTRAN 时运行成功。
program main
implicit none
integer:: a(3), b(3) ,c(3)
a=[3, 4, 5]
b=[1, 2, 3]
call sub(a,b,c)
write(*,*)'a+b = ',c
end program main
subroutine sub(a,b,c)
implicit none
integer, intent(in)::a(:),b(:)
integer, intent(out)::c(:)
c=a+b
end subroutine sub
对此有何解释?
最佳答案
当您调用具有虚拟参数形状的子例程(如本程序中的情况)时,需要显式接口(interface)。实现此目的最简单的方法是将子程序放在模块中,并在主程序中使用该模块。
关于fortran - 在 Fortran 中调用子例程(段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9439197/