0

我先编辑三个文件:add.f90

 module MA
  implicit none
   contains
    subroutine show_int(n)
      implicit none
      integer , intent(in) ::n
      write(*,"('n=',I3)") n
      return
    end subroutine show_int
     subroutine show_character(str)
      implicit none
       character(len=*) ,intent(in) :: str
       write(*,"('str=',A)") str
       return
    end subroutine show_character
end module

第二:add.h

interface show
  module procedure show_int, show_character
end interface

第三:main.f90

program main
   use MA
   implicit none
   include 'add.h'
   call show_int(1)
   call show(1)
   call show_character("Fortran 95")
   call show("Fortran 95")
   print * ,"hello "
end program

我编译,gfortran add.f90 main.f90 -o main
我得到这些错误 add.h:2.2: 包含于main.f90:4:<br> module procedure show_int, show_character
1
错误: (1) 语句无法归类
main .f90:6.1:
call show(1)
1
错误:泛泛型'show'在(1)没有特定的子进程<br> main.f90:8.24:
call show("Fortran 95") 1
错误: 'show'在(1)没有特定的子进程<br> 不知道为什么?你能帮助我吗 ?谢谢

4

1 回答 1

0

我无法阅读错误消息,但是:

module procedure语句只能在包含该过程的模块内使用。忘记.h文件并将通用接口块放入模块中。在 Fortran 2003 中,您可以只使用procedure(不使用module),它应该可以工作。

于 2013-06-19T07:01:37.627 回答