【发布时间】:2017-07-21 08:19:15
【问题描述】:
通常,当我编写 Fortran 函数的集合时,我会将它们放入 MODULE 中,如下所示:
!mystuff.f90
MODULE mymodule
IMPLICIT NONE
CONTAINS
SUBROUTINE mysubroutine1(a,b)
!code
END SUBROUTINE
SUBROUTINE mysubroutine2(a,b)
!code
END SUBROUTINE
!lots more functions and subroutines
END MODULE
我成功地编译它像这样gfortran -c mystuff.f90。这会创建mystuff.o,我可以在我的主程序中使用它。
但是,我的MODULE 中的函数/子例程的数量和单个大小已经变得非常庞大,我真的需要将其拆分为不同的文件。
!mysubrtn1.f90
SUBROUTINE mysubroutine1(a,b)
!code
END SUBROUTINE
和
! mysubrtn2.f90
SUBROUTINE mysubroutine2(a,b)
!code
END SUBROUTINE
等等……
但我仍然希望将所有这些功能保留在一个单个 MODULE 中。如何告诉编译器编译 mysubrtn1.f90、mysubrtn2.f90、... 中的函数,以便在 .o 文件中生成单个模块?
【问题讨论】:
-
如果你有一个最近的编译器,你可能应该研究一下最近引入的 Fortran 的
submodule功能。仔细看,你会在这个话题上找到 Qs 和 As。submodules不仅允许您将大模块分解成更小的部分,它们还允许您分离接口和实现。这通常很有用。