从两个模块中定义两个具有相同名称的变量

时间:2016-02-17 20:27:58

标签: initialization fortran

我想从两个模块中定义两个具有相同名称的变量 例如, 我有两个模块如下:

module boundary
  implicit none
  real(kind=8)::pi
  save
contains
....
end module boundary

.............

module scheme
  implicit none
  real(kind=8)::pi
  save
contains
....
end module scheme

............

上面让fortran为这个变量设置空间,contains之后的一些子模块将使用pi,然后在下面的程序中,我想要 将两个变量(同名)都设置为指定值,它们必须相同。 我能这样做吗?

subroutine initialize ()

  use scheme,only:pi
  use boundary,only:pi
  pi=acos(-1.d0)

end subroutine initialize

1 个答案:

答案 0 :(得分:2)

如果您有两个模块A和B包含相同的方法foo(),那么首先您可以创建一个本地别名:

program SOModNames
use A, fooA => foo
use B, fooB => foo
implicit none

! Variables
real X(10), Y(10)

call fooA(X,10)
call fooB(Y,10)

end program SOModNames

不幸的是,您无法使用call A::foo(X,10)作为范围。