2

我有一个 fortran 库,我必须将一个具有非常特定格式的函数传递给该库。然后图书馆正在对我的功能进行一些操作。该功能是由用户(如我)编写的,并且库是理所当然的。

不幸的是,要计算我的函数,我需要一些值(其中一些可以在主中一劳永逸地初始化),我想避免使用commonor save

我读到我可以使用单例模式,但我在模板方面不是很专家,除此之外,有些人批评它的使用。那么,即使我的函数的参数中不能包含我的变量,我如何才能在函数中传递它呢?

4

1 回答 1

4

如果你定义一个 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语句添加到主程序中。

于 2013-09-26T23:58:33.320 回答