首页 > 解决方案 > F90中加载模块和接口的正确结构是什么?

问题描述

以下 Fortran 行

SUBROUTINE AFprep (ida, idb, jda, jdb, kda, kdb )
  IMPLICIT NONE
  include 'mpif.h'
  USE some_module

    interface
      SUBROUTINE nothing (azf, ata)
        REAL,          INTENT(IN)    :: azf         ( : , : , : )
        REAL,          INTENT(IN)    :: ata         ( : , : , : )
      END SUBROUTINE nothing
    end interface

  REAL,      PARAMETER :: PI = 3.14159265
  REAL( 8 ), PARAMETER :: DPI = 3.14159265358979324D0
  REAL, PARAMETER :: PI180  = PI / 180.0
  REAL, PARAMETER :: GRAV = 9.80622

  INTEGER, INTENT(IN)           :: ida, idb, jda, jdb, kda, kdb
  REAL                          :: aensf

  REAL, ALLOCATABLE, SAVE :: densq   ( : , : , : )

  integer :: i, j, status(MPI_STATUS_SIZE)
  character (len = 50) :: myfmt

END SUBROUTINE AFprep

正在产生错误

Error: USE statement at (1) cannot follow INTERFACE statement at (2)

这有点奇怪,因为USE在之前interface(除非编译器出于某种我看不到的原因移动它)。some_module是早期构建的一个非常大的模块,编译器是 GCC-11。我不太确定该怎么做,因为如果USE some_module被注释掉,编译就会通过(移动USEinterface会导致与预期相同的错误)。

标签: interfacefortrangfortran

解决方案


推荐阅读