1. 作用域规则
- 在Fortran模块中定义的变量,对于模块内所有的子程序、函数等程序单元都具有模块作用域。这意味着模块内的任何程序单元都可以访问和修改该变量。例如,若在模块中定义了变量
real :: global_var
,模块内的子程序 subroutine sub1
可以对其进行读取和写入操作。
2. 限制作用域范围仅在特定子程序中有效
- 使用局部变量:在特定子程序内部重新定义同名变量,该局部变量会隐藏模块变量。例如:
module my_module
real :: global_var
contains
subroutine sub1
real :: global_var
global_var = 1.0 ! 这里操作的是局部变量
end subroutine sub1
subroutine sub2
global_var = 2.0 ! 这里操作的是模块变量
end subroutine sub2
end module my_module
- 使用块作用域:在子程序内使用
block
结构并在其中定义变量。变量的作用域仅在该 block
块内有效。例如:
module my_module
real :: global_var
contains
subroutine sub1
block
real :: local_var
local_var = 1.0
end block
! local_var 在此处不可访问
end subroutine sub1
end module my_module
- 使用
private
关键字:在Fortran 2003及以后版本,可以在子程序内部使用 private
关键字来限制变量的作用域。例如:
module my_module
real :: global_var
contains
subroutine sub1
real :: local_var
private :: local_var
local_var = 1.0
end subroutine sub1
subroutine sub2
! local_var 在此处不可访问
end subroutine sub2
end module my_module