1

我有一个名为“mainmodule.f08”的模块和两个模块“module1.f08”和“module2.f08”。在“mainmodule.f08”中,我有:

MODULE mainmodule
    use module1
    use module2
END MODULE mainmodule

我只能在我的程序中使用“module1”和“module2”use mainmodule中的程序。

使用子模块可以做同样的事情,但这要复杂得多,因为我需要在“mainmodule”上重新定义“module1”和“module2”中的所有程序作为接口,将“module1”和“module2”视为子模块:

MODULE mainmodule
    INTERFACE

       ! Same subroutine from module1.
       subroutine submod1(x)
          integer, intent(in) :: x
       end subroutine submod1

       ! Same function from module2.
       function funcmod2(x) result(y)
          integer, intent(in) :: x
          integer :: y
       end function funcmod2

    END INTERFACE
END MODULE mainmodule

如果两者都以相同的方式工作,那么两种模块的使用模式有什么区别?

4

1 回答 1

1

这两种方法的工作方式不同。

MODULE mainmodule
    use module1
    use module2
END MODULE mainmodule

该模块mainmodule使其他两个模块中的公共实体可用。然后通过使用关联将它们公开为mainmodule.

这与子模块不同。

您可以阅读有关其他问题的子模块的信息

对于最终模块的用户来说,最终结果可能看起来是一样的,但是对于模块的开发人员来说,细节是很重要的。

于 2019-11-11T18:11:12.410 回答