我有一个看起来像这样的函数:
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
Run Code Online (Sandbox Code Playgroud)
gfortran 4.8.1告诉我
REAL :: t = 0.0
1
Error: Initialization of variable at (1) is not allowed in a PURE procedure
Run Code Online (Sandbox Code Playgroud)
据我了解,我应该能够在纯函数中使用局部变量,只要它们没有SAVE属性.那么我做错了什么?
在现代Fortran初始化意味着SAVE.从F2008 5.2.3
不在公共块中的变量的显式初始化意味着SAVE属性,其可以通过显式规范来确认.
您可以使用局部变量,但只是
real t
t = 0
Run Code Online (Sandbox Code Playgroud)
这不是初始化.
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |