主题:FORTRAN里的SAVE用法
randy2009
[专家分:0] 发布于 2009-04-30 11:53:00
请问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个回复)
沙发
jfnano [专家分:2370] 发布于 2009-04-30 16:28:00
和 C语言的 static 差不多, 因为默认是 save,所以一般不用写
板凳
randy2009 [专家分:0] 发布于 2009-05-01 09:35:00
那这里的save是针对上面的变量还是下面的函数?能否解释具体些?谢谢!
3 楼
jfnano [专家分:2370] 发布于 2009-05-01 14:13:00
不好意思, 刚开始我没注意看,这中用法我没见过,文档查遍了都没看到。。
各位高手回复一下吧。。
4 楼
yeg001 [专家分:14390] 发布于 2009-05-01 22:56:00
save是对check_ret 和 check_var起作用吧. 子函数修改这些变量之后的值都被保留下来.
5 楼
jfnano [专家分:2370] 发布于 2009-05-02 11:39:00
不过 check_ret 和 check_var 是 SUBROUTINE ,
save 到subroutine 有什么作用?
6 楼
leeway [专家分:0] 发布于 2011-06-26 10:35:00
save应该是对 前面的netcdf.inc起作用吧
7 楼
helo_aBiNg [专家分:480] 发布于 2011-06-26 11:15:00
save 只对它前面的变量有用。但你将它去掉,结果应该是一样,如果你用的编译器版本比较高的话。module 发明之初,存在潜在 bug,save 用于强制保存修改过的变量。所以说 save 大概是个过渡性质的指令。
但我并不确定,印象中是这样。Correct me if I was wrong.:P
8 楼
臭石头雪球 [专家分:23030] 发布于 2011-06-26 20:51:00
module 的变量默认具有 save 属性。
所以 save 一般用于普通子程序中的局部变量。
如果module 中写上 save,更显式的说明更好。
我来回复