我可以使用带有 intent(in)
的子程序的 Fortran 可选参数和 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/