我不知道是否存在具有Fortran中一个全局变量,它可以表述为某种“保护”的一种方式。 我想,它包含的变量列表模块A的。 使用一个可以用它每隔模块或子程序的变量。 如果你知道什么该变量的值,可以使用参数来实现,它不能被覆盖。 但是,如果你有什么先运行代码来确定变量的值? 因为你需要去改变它,你不能说出它作为参数。 有没有办法做到相似,但在运行期间的特定点的东西吗?
Answer 1:
你可以使用PROTECTED
一个模块中的属性。 已经引入了Fortran 2003标准。 该模块中的程序可以改变保护的对象,但不是在模块或使用你的模块programes程序。
例:
module m_test
integer, protected :: a
contains
subroutine init(val)
integer val
a = val
end subroutine
end module m_test
program test
use m_test
call init(5)
print *, a
! if you uncomment these lines, the compiler should flag an error
!a = 10
!print *, a
call init(10)
print *, a
end program
文章来源: Protected global variables in Fortran