我有这样的事情:
Module ModA
contains
subroutine FooA()
....
end subroutine
subroutine FooB()
....
end subroutine
end mofule ModA
我可以将两个子程序分别放在一个单独的文件中,但它们都属于同一个模块。
答案 0 :(得分:4)
是。你有两个选择。
第一种是简单地用模块子程序部分中的子程序源包含文件。
! Module.f90
MODULE ModA
CONTAINS
INCLUDE 'FooA.f90'
INCLUDE 'FooB.f90'
END MODULE ModA
! FooA.f90
SUBROUTINE FooA()
!...
END SUBROUTINE FooA
! FooB.f90
SUBROUTINE FooB()
!...
END SUBROUTINE FooB
第二个选项是将每个子程序移动到它自己的子模块中。
MODULE ModA
INTERFACE
MODULE SUBROUTINE FooA()
END MODULE SUBROUTINE FooA
MODULE SUBROUTINE FooB()
END MODULE SUBROUTINE FooB()
END INTERFACE
END MODULE ModA
! FooA.f90 (or whatever name you prefer)
SUBMODULE (ModA) FooA_submodule
CONTAINS
MODULE PROCEDURE FooA
!...
END PROCEDURE FooA
END SUBMODULE FooA_submodule
! FooB.f90 (or whatever name you prefer).
SUBMODULE (ModA) FooB_submodule
CONTAINS
MODULE PROCEDURE FooB
!...
END MODULE PROCEDURE FooB
END SUBMODULE FooB_submodule
但是您需要使用Fortran编译器来支持此选项的Fortran 2008子模块功能。