将基本过程传递给另一个基本过程

时间:2019-08-23 21:25:53

标签: fortran

我想将一个基本过程传递给另一个基本过程。一个最小的工作示例可能是这样的:

elemental real function func(x, f_dummy)
    implicit none

    real, intent(in) :: x
    interface
        elemental real function f_dummy(x)
            real, intent(in) :: x
        end function f_dummy
    end interface

    func = 2.0 * f_dummy(x)

    return
end function func

编译器说:

Error: Dummy procedure ‘f_dummy’ not allowed in elemental procedure ‘func’ at (1)

如果我删除elemental的所有实例,则它将编译。

是否存在将基本过程传递给另一个基本过程的合法方法?

1 个答案:

答案 0 :(得分:3)

否,元素过程的参数必须是标量,而不是数组,而不是过程。作为一种解决方法,您可以编写一个处理数组和该过程的过程,该过程只是纯函数,而不是基本函数。

基本过程可以是伪参数。但是基本过程的论点不能是过程。也许它可以是过程指针,但是当您在数组上进行元素调用时,您必须传递一个指针数组。