使用包含,接口,模块或单独的子例程?

时间:2016-09-30 19:29:21

标签: fortran fortran90 gfortran f2py

我已经在Fortran中编写了一些代码,但对于如何构建更长的代码并没有真正的自信。

我经常想要assumed-shape arrays。使用interface blockmodulecontains语句时,这似乎是可行的。但是,在主代码之外使用子例程,而不使用任何这些方法适用于许多情况,但不适用于assumed-shape arrays

在哪种情况下,这些方法都是首选,主要区别是什么?

每种方法中变量共享/继承的方式是什么?

1 个答案:

答案 0 :(得分:2)

接口块是额外的工作。您必须编写块并在过程更改时对其进行修改。接口块对于诸如使用ISO C绑定工具调用C语言例程之类的目的非常有用。

在主程序中的“contains”下面有一个子程序,其缺点是所有局部变量都是继承的。我认为对于更加孤立的程序来说更好。

模块使程序更加孤立,变量的访问更加清晰 - 除非你过度使用模块变量。此外,它更容易重用其他程序中的模块的程序。