我可以使用带有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
答案 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中不可能。