fortran - g95 与 gfortran : Dummy procedure 'f' of PURE procedure at (1) must also be PURE

标签 fortran gfortran fortran95 g95

  ....
  abstract interface
     pure function fi(t,u) result (fu)
       use NumberKinds
       real(kp), dimension(:), intent(in) :: u
       real(kp), intent(in) :: t
       real(kp), dimension(size(u)) ::  fu
     end function fi
  end interface


contains

  pure function rk4_step(u,f,dt) result(un)
    use NumberKinds
    real(kp), intent(in) :: dt
    real(kp), intent(in),  dimension(:) :: u
    real(kp), dimension(size(u))  :: k1,k2,k3,k4,un
    procedure(fi) :: f
    integer :: N
    ...

  end function rk4_step
  ...

我收到 g95 的错误消息:G95 (GCC 4.0.3 (g95 0.94!) Jan 17 2013)

In file src/integrators.f95:34

  pure function rk4_step(u,f,dt) result(un)
                           1
Error: Dummy procedure 'f' of PURE procedure at (1) must also be PURE
Makefile:28: recipe for target 'test_rk4' failed

我不明白 gfortran:GNU Fortran (GCC) 4.8.2 20140206(预发布) 并且程序编译时没有进一步的问题

最佳答案

只是一个编译器错误。 g95 已经很老了,当时 Fortran 2003 刚刚开始在编译器中实现。它具有不错的 C 互操作性、流访问等,但许多其他功能根本没有实现。

如果您需要现代功能支持,请不要使用已经很长时间没有更新的编译器(最近有一个小异常(exception))。

您可以尝试使用 rk4_step 内部的接口(interface) block 来代替 抽象接口(interface),即 Fortran 90,适用于 g95。

  pure function rk4_step(u,f,dt) result(un)
    use NumberKinds
    real(kp), intent(in) :: dt
    real(kp), intent(in),  dimension(:) :: u
    real(kp), dimension(size(u))  :: k1,k2,k3,k4,un
    integer :: N

    interface
       pure function f(t,u) result (fu)
         use NumberKinds
         real(kp), dimension(:), intent(in) :: u
         real(kp), intent(in) :: t
         real(kp), dimension(size(u)) ::  fu
       end function f
    end interface
  end function rk4_step

关于fortran - g95 与 gfortran : Dummy procedure 'f' of PURE procedure at (1) must also be PURE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770122/

相关文章:

arrays - 在 gfortran 中分配大矩阵时整数溢出

arrays - 英特尔 Fortran 95 编译器是否允许模块数组的大小不固定?

excel - 从 fortran 获取到 excel 文件 fortran (ftn95)

fortran - open 语句中缓冲的 ='yes' 处的语法错误

algorithm - OpenMP 稀疏雅可比

generics - 在 Fortran 90 中为抽象类型创建接口(interface)

memory-management - gfortran傻瓜版:mcmodel = medium到底能做什么?

windows - MinGW gfortran编译错误: “Unrecognized option ' -plugin' ”

fortran - 在 Fortran 中解析随机 "String + Integers"

compilation - ifort - 将对象和 mod 文件分离到不同的文件夹中