我可以将Fortran可选参数与intent(in)intent(inout)的子例程一起使用,但是通过函数,可选参数仅适用于intent(in),对吗?使用intent(inout)我在以下代码中遇到了段错误:

real function foo(x, tol)
    real, intent(in) :: x
    real, optional, intent(inout) :: tol
    if( .not. present(tol) ) tol = 1e-6
    !...
end function foo

最佳答案

我发现了问题,即使在第四行(在tol = 1e-6中)不存在时,我也使用了变量:

real function foo(x, tol)
    real, intent(in) :: x
    real, optional, intent(inout) :: tol
    if( .not. present(tol) ) tol = 1e-6
    !...
end function foo

但是,即使在不存在的情况下,我也想使用它并设置默认值,例如在C++中,我们要做类似的事情
double foo(double x, double tol=1e-6)

不幸的是,似乎在Fortran中是不可能的。

关于function - Fortran函数中带有可选参数的段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18452668/

10-10 17:42