【发布时间】:2016-04-21 16:42:04
【问题描述】:
我有一个模块,我在其中编写了一堆我经常使用的子例程。但是,并非每次我都需要它们。是否可以从该模块仅加载一个(或两个...)子例程?
我这样做的兴趣在于,有一个特定的子例程需要另一个模块才能工作,所以如果我不打算使用那个子例程,我宁愿避免加载那个额外的模块。
这是我所拥有的示例
MODULE MYLIBRARY
IMPLICIT NONE
CONTAINS
SUBROUTINE PROC1
PRINT *, 'This is PROC1'
END SUBROUTINE PROC1
SUBROUTINE PROC2
USE EXTRAMOD
PRINT *, 'This is PROC2'
END SUBROUTINE PROC2
END MODULE MYLIBRARY
我希望能够仅在我的主程序 PROC1 中加载,因此我不必加载模块 EXTRAMOD(实际上我什至不需要该文件)。在我的主程序中,我尝试使用 ONLY 选项,但这似乎只适用于变量而不是子例程。这是主文件的示例
PROGRAM MAIN
USE MYLIBRARY, ONLY : PROC1
IMPLICIT NONE
CALL PROC1
END PROGRAM Main
当我编译它时,我收到错误“打开编译的模块文件时出错。检查包含路径。[EXTRAMOD]”。
有什么想法吗?
【问题讨论】:
-
only子句也必须与子程序一起使用!显示一个最小且可验证的示例,它会给您带来麻烦stackoverflow.com/help/mcve。究竟是什么意思“这似乎只适用于变量而不是子程序”?你有什么证据?
标签: module fortran intel-fortran