回 帖 发 新 帖 刷新版面

主题:FORTRAN里的SAVE用法

请问module里面在声明函数前用save有什么用?例如
module ncdio
  use shr_sys_mod    , only : shr_sys_flush
  implicit none
  include 'netcdf.inc'
  save
  public :: check_ret   
  public :: check_var   

这里的save有什么作用?
谢谢!

回复列表 (共8个回复)

沙发


和 C语言的 static 差不多, 因为默认是 save,所以一般不用写

板凳

那这里的save是针对上面的变量还是下面的函数?能否解释具体些?谢谢!

3 楼


不好意思, 刚开始我没注意看,这中用法我没见过,文档查遍了都没看到。。

各位高手回复一下吧。。

4 楼

save是对check_ret 和 check_var起作用吧. 子函数修改这些变量之后的值都被保留下来.

5 楼


不过 check_ret 和 check_var 是 SUBROUTINE ,
 save 到subroutine 有什么作用?

6 楼


save应该是对 前面的netcdf.inc起作用吧

7 楼

save 只对它前面的变量有用。但你将它去掉,结果应该是一样,如果你用的编译器版本比较高的话。module 发明之初,存在潜在 bug,save 用于强制保存修改过的变量。所以说 save 大概是个过渡性质的指令。

但我并不确定,印象中是这样。Correct me if I was wrong.:P

8 楼

module 的变量默认具有 save 属性。

所以 save 一般用于普通子程序中的局部变量。

如果module 中写上 save,更显式的说明更好。

我来回复

您尚未登录,请登录后再回复。点此登录或注册