Fortran纯函数中局部变量的声明和初始化
我有一个函数如下所示:Fortran纯函数中局部变量的声明和初始化,fortran,Fortran,我有一个函数如下所示: PURE FUNCTION simulate(initial_state, time_specification) TYPE(ocean), INTENT(IN) :: initial_state TYPE(simulation_time), INTENT(IN) :: time_specification TYPE(ocean) :: simulate REAL :: t = 0.0
PURE FUNCTION simulate(initial_state, time_specification)
TYPE(ocean), INTENT(IN) :: initial_state
TYPE(simulation_time), INTENT(IN) :: time_specification
TYPE(ocean) :: simulate
REAL :: t = 0.0
! etc
END FUNCTION simulate
gfortran 4.8.1通知我
REAL :: t = 0.0
1
Error: Initialization of variable at (1) is not allowed in a PURE procedure
据我所知,我应该能够在纯函数中使用局部变量,只要它们没有SAVE属性。那么我做错了什么呢?当心!声明期间初始化变量意味着
save
属性!这违反了pure
条件。有关详细信息,请参阅
最好稍后在代码中初始化变量…在现代Fortran初始化提示下
保存。从F2008 5.2.3开始
不在公共块中的变量的显式初始化意味着SAVE属性,这可以由显式规范确认
您可以使用局部变量,但只需
real t
t = 0
这不是初始化。REAL::t=0.0
不是纯的,因为它只在第一次调用函数时生效。我想你的意思是REAL::t
,但是,谢谢,这是有效的!嗯,:
是一种风格,除非需要。在这种情况下,它不是必需的,但在初始化时它是必需的。也就是说,有些人喜欢每次都保持一致性。