访问控制

可以使用 privatepublic 属性和语句来控制模块中声明的符号的可访问性。

声明表格的语法:

!all symbols declared in the module are private by default
private

!all symbols declared in the module are public by default
public

!symbols in the list will be private
private::name1, name2

!symbols in the list will be public
public::name3, name4

属性形式的语法:

integer, parameter, public::maxn = 1000

real, parameter, private::local_constant = 42.24

可以使用模块从程序单元访问公共符号,但私有符号不能。

如果未使用规范,则默认为 public

使用默认访问规范

private

要么

public

可以通过使用 entity-declaration-list 指定不同的访问权限来更改 **

public::name1, name2

或使用属性。

此访问控制还会影响从另一个模块导入的符号:

module mod1
  integer::var1
end module

module mod2
  use mod1, only: var1

  public
end module

program test
  use mod2, only: var1
end program

是可能的,但是

module mod1
  integer::var1
end module

module mod2
  use mod1, only: var1

  public
  private::var1
end module

program test
  use mod2, only: var1
end program

是不可能的,因为 varmod2 是私人的。