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