以下代码中的本地 save
d 变量暴露给外部范围是否是有效的 Fortran(>=2003) 代码?
我故意没有为标准指定年份。如果不同标准的答案不同,假设支持指针,我也很乐意听到答案。
program test_save
implicit none
integer, pointer :: ptr
ptr => get_number(5)
write(*, *) ptr
contains
function get_number(n) result(res)
integer, intent(in) :: n
integer, pointer :: res
integer, target, save :: internal_n
internal_n = n
res => internal_n
end function
end program
最佳答案
要考虑的一点是,当函数退出时,res
的目标是否仍然定义(F2018 19.6.6p1(16))。由于目标具有 SAVE
属性,它确实保持定义状态 (F2018 19.6.6p1(3)),因此指针保持定义状态。
关于fortran - 将保存的/静态目标变量公开到外部范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69065251/