如何在 Fortran 中声明私有函数?
Ngu Soon Hui
问问题
15521 次
4 回答
27
这仅适用于 Fortran 90 模块。在您的模块声明中,您可以使用“public”和“private”关键字指定变量和例程列表的访问限制。我通常发现最初单独使用 private 关键字很有帮助,它指定模块中的所有内容都是私有的,除非明确标记为 public。
在下面的代码示例中,subroutine_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
于 2008-10-21T15:25:52.510 回答
3
如果使用模块,语法如下:
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
于 2015-06-18T22:03:15.350 回答
2
我从来没有写过 FORTRAN 的一行,但是这个关于“私有模块过程”的主题似乎很热门,至少我希望如此。至少似乎包含答案。
贾雷多总结:
public/private 属性存在于 Fortran 90 及更高版本的模块中。Fortran 77 及更早版本——你运气不好。
于 2008-10-21T08:40:18.270 回答
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
...
于 2008-10-21T14:07:14.680 回答