gpt4 book ai didi

fortran - 如何将单独文件中的 Fortran FUNCTION/SUBROUTINE 编译成单个 MODULE

转载 作者:行者123 更新时间:2023-12-03 23:22:43 24 4
gpt4 key购买 nike

通常,当我编写一组 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 中生成单个模块文件?

最佳答案

您可以简单地使用 include 包含另一个 Fortran 源代码文件:

!mystuff.f90
MODULE mymodule
IMPLICIT NONE

CONTAINS

include 'mysubrtn1.f90'
include 'mysubrtn2.f90'

!lots more functions and subroutines

END MODULE

来自 here :

The INCLUDE statement directs the compiler to stop reading statements from the current file and read statements in an included file or text



所以你可以看到生成的模块仍然包含两个子例程。

如果您的编译器支持它,则实现相同目的的另一种方法是使用预处理器指令:
#include "filename"

关于fortran - 如何将单独文件中的 Fortran FUNCTION/SUBROUTINE 编译成单个 MODULE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45223705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com