我有一个 fortran 库,我必须将一个具有非常特定格式的函数传递给该库。然后图书馆正在对我的功能进行一些操作。该功能是由用户(如我)编写的,并且库是理所当然的。
不幸的是,要计算我的函数,我需要一些值(其中一些可以在主中一劳永逸地初始化),我想避免使用common
or save
。
我读到我可以使用单例模式,但我在模板方面不是很专家,除此之外,有些人批评它的使用。那么,即使我的函数的参数中不能包含我的变量,我如何才能在函数中传递它呢?
我有一个 fortran 库,我必须将一个具有非常特定格式的函数传递给该库。然后图书馆正在对我的功能进行一些操作。该功能是由用户(如我)编写的,并且库是理所当然的。
不幸的是,要计算我的函数,我需要一些值(其中一些可以在主中一劳永逸地初始化),我想避免使用common
or save
。
我读到我可以使用单例模式,但我在模板方面不是很专家,除此之外,有些人批评它的使用。那么,即使我的函数的参数中不能包含我的变量,我如何才能在函数中传递它呢?
如果你定义一个 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
语句添加到主程序中。