【发布时间】:2019-09-16 08:50:22
【问题描述】:
我在 Fortran 模块中有一个函数,它有两个必需参数和一个可选参数。如果可选参数不存在,我想在函数中为其设置一个默认值。
当我使用该函数时,我得到一个分段错误:Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
回溯指的是第一行
if (.not. present(optionalArg)) then
optionalArg = 2
end if
并且定义了函数
function func(reqArg1, reqArg2, optionalArg)
real(kind=real64), intent(in) :: reqArg1
integer, intent(in) :: reqArg2
integer, optional :: optionalArg
real(kind=real64), dimension(reqArg2) :: func
...
这是定义带有可选参数的函数的正确方法吗?我已经尝试在调用另一个函数的模块和定义函数的模块中为函数编写显式接口,但都给我错误。如果我将接口放在调用函数的模块中,我会得到Error: Cannot change attributes of USE-associated symbol func,因为该模块已经包含在USE 语句中,如果我将接口放在函数的模块中,我会收到关于函数已经拥有的错误当编译器到达CONTAINS 块中的实际函数定义时定义。
【问题讨论】:
-
你真的必须展示完整的代码,minimal reproducible example。
标签: fortran