如何在Fortran中声明私有函数?
答案 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
...