我编写了一个代码,用于查找在参数中提供名称的函数的根,我想我是从 Numerical Recipes 中获取的。就像是
double 函数 rtsafe(x_init, x1, x2, xacc, func, dfunc)
其中 func 和 dfunc 是两个函数的名称。
当然,我将 rtsafe 与不同的函数 func 和 dfunc 一起使用。
当我在 rtsafe 中时,我想打印被调用函数 func 和 dfunc 的名称,因为当 rtsafe 中出现错误时,我想知道我使用的是哪个函数。就像是
write(,)"my func = ", func
(?)
有人知道怎么做吗?
最佳答案
您可以在返回函数名称的函数中添加一个可选参数:
FUNCTION f(x, fname) RESULT (fx)
IMPLICIT NONE
REAL :: x, fx
CHARACTER(LEN=*), OPTIONAL :: fname
CHARACTER(LEN=*), PARAMETER :: myfname='somename'
IF (present(fname)) fname=myfname
fx = x ! or whatever else
END FUNCTION f
在 rtsafe 中对您的函数的第一次调用中,您将获得该函数的名称,以便以后出现错误时进行打印。
没有测试这个,但它应该或多或少像这样工作,这是我能想到的在 Fortran 中做到这一点的唯一方法。
关于fortran90 - 在 fortran 90 中打印函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870959/