接口中变量的可见性

时间:2019-05-24 18:25:18

标签: fortran fortran95 first-class-functions

在Fortran中,我有以下函数作为参数的示例。

! Compile using --implicit-none
module test_module
  integer, parameter :: dp = selected_real_kind(15, 307)

contains

  real(dp) function eval(f, x)
    real(dp), intent(in) :: x
    interface
      real(dp) function f(x)
        real(dp), intent(in) :: x
      end function
    end interface

    eval = f(x)

  end function

  real(dp) function square(x)
    real(dp), intent(in) :: x
    square = x**2
  end function

end module test_module

program test_program
  use test_module

  write(*, *) eval(square, 3.d0)

end program

编译时,出现以下错误:

gfortran-7.4.0中:

       real(dp) function f(x)
             1
Error: Symbol ‘dp’ at (1) has no IMPLICIT type

ifort-16.0.1中:

error #6683: A kind type parameter must be a compile-time constant.   [DP]
      real(dp) function f(x)
-----------^

显然,全局编译常量dp在此接口中不可见。我该如何正确编写?

如果我将dp替换为例如8。

0 个答案:

没有答案