【发布时间】:2019-09-03 15:34:50
【问题描述】:
听说,在 Fortran77 中,函数中的所有局部变量都是在主程序执行开始时创建并存在于整个运行时,而不是在进入函数时创建并在退出时销毁。我不知道这在较新的 Fortran 中是否仍然适用。有什么方法可以测试出来吗? 一项可能有帮助的测试是检查变量是否在调用之间保持其值。这是一个简单的测试:
program main
call p()
call p()
call p()
end program main
subroutine p()
real :: a(3)
a=a+1
write(*,*) a(1), a(2), a(3)
end subroutine p
我使用gfortran 的测试表明数组a 在调用之间保留其值,与使用save 属性的行为相同。
我想知道这是 Fortran 语言中的标准还是取决于编译器实现。
【问题讨论】: