在Fortran函数中使用可选参数进行分段错误

时间:2013-08-26 20:41:26

标签: function fortran optional-parameters

我可以使用带有intent(in)intent(inout)的子程序的Fortran可选参与者,但是函数可选参数仅适用于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

1 个答案:

答案 0 :(得分:4)

我发现了问题,即使第四行(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中不可能。