我有一个fortran库,我必须使用非常特定的格式传递函数。然后该库正在对我的函数进行一些操作。该函数由用户(像我一样)编写,并且该库是理所当然的。
不幸的是,为了计算我的函数,我需要一些值(其中一些可以在主要版本中初始化一次),我希望避免使用common
或save
。
我读过我可以使用单例模式,但我不是模板专家,而且有些人批评它的使用。所以, 即使我在函数的参数中没有它,我如何在函数内传递变量?
答案 0 :(得分:3)
如果你定义了Fortran MODULE
,你可以让你的函数使用一些未在主程序中定义的变量:
MODULE mymod
REAL :: x = 1.35
INTEGER :: y = 16
CONTAINS
FUNCTION results(a,b)
REAL :: a, results
INTEGER :: b
results = a*x+real(b+y)
END FUNCTION results
END MODULE mymod
PROGRAM extrn_func
USE mymod, ONLY: results
PRINT *,results(1.0, 3)
END PROGRAM extrn_func
但是,此方法要求您能够将USE mymod
语句添加到主程序中。