fortran变量范围的难度

3 fortran

我在其中一个fortran函数中初始化了一个变量.我在另一个功能中使用它.但价值并不相同.在其他函数调用我得到垃圾值.我如何保持初始值.

例如:

entry a()
num_calls=0

entry b()
num_calls= num_calls + 1

从条目"b"我得到num_calls作为一些垃圾

Jon*_*ler 5

在经典的Fortran(Fortran 77或更早版本)中,您需要确保在公共块中定义num_calls - 可能是命名的公共块.

COMMON /magic/ num_calls
Run Code Online (Sandbox Code Playgroud)

我没有使用Fortran 90,所以我不知道它有什么额外的设施.它可能会保留命名的公共块以实现向后兼容,但也可能提供更好的功能.

我也作弊,并使用了变量的隐式声明.完整的,我应该写:

INTEGER*4 num_calls
COMMON /magic/ num_calls
Run Code Online (Sandbox Code Playgroud)