Fortran的私人功能

时间:2008-10-21 08:36:21

标签: fortran

如何在Fortran中声明私有函数?

4 个答案:

答案 0 :(得分:24)

这仅适用于Fortran 90模块。在模块声明中,您可以使用“public”和“private”关键字为变量和例程列表指定访问限制。我通常发现最初使用private关键字很有帮助,它指定模块中的所有内容都是私有的,除非明确标记为public。

在下面的代码示例中,子例程_1()和function_1()可以通过必需的“use”语句从模块外部访问,但任何其他变量/子例程/函数都是私有的。

module so_example
  implicit none

  private

  public :: subroutine_1
  public :: function_1

contains

  ! Implementation of subroutines and functions goes here  

end module so_example

答案 1 :(得分:2)

我从未写过一行FORTRAN,但this thread about "Private module procedures"似乎是热门话题,至少我希望如此。似乎至少包含答案。


jaredor 摘要:

  

公共/私有属性存在于Fortran 90及更高版本的模块中。 Fortran 77及更早版本 - 你运气不好。

答案 2 :(得分:2)

如果您使用模块,则语法如下:

PUBLIC  :: subname-1, funname-2, ...

PRIVATE :: subname-1, funname-2, ...

无法从模块外部访问PRIVATE中列出的所有实体,并且可以从模块外部访问PUBLIC中列出的所有实体。默认情况下,可以从模块外部访问所有其他实体。

MODULE  Field
  IMPLICIT   NONE

  Integer :: Dimen

  PUBLIC  :: Gravity
  PRIVATE :: Electric, Magnetic

CONTAINS

  INTEGER FUNCTION  Gravity()
    ..........
  END FUNCTION Gravity


  REAL FUNCTION  Electric()
    ..........
  END FUNCTION


  REAL FUNCTION  Magnetic()
    ..........
  END FUNCTION

  ..........

END MODULE  Field

答案 3 :(得分:1)

Private xxx, yyy, zzz

real function xxx (v)
  ...
end function xxx

integer function yyy()
  ...
end function yyy

subroutine zzz ( a,b,c )
  ...
end subroutine zzz

... 
other stuff that calls them
...