创建单独的模块过程时,在什么情况下会在子模块中使用“模块过程”?

jos*_*ndc 5 fortran module fortran2008 fortran2018

我了解 Fortran 2008+ 中子模块的一般好处,但我无法理解其中一种语法选项的好处。

如果我想创建单独的模块过程(其中过程主体位于子模块中),我需要在父模块中创建一个接口。该接口必须包含子例程或函数标识符以及参数列表和意图。这都是有道理的。

然后子模块包含过程的实现,但可以选择语法:我可以重复子例程或函数的签名,或者,我可以简单地使用“模块过程”之后的接口中的名称。我本来想打出一个例子,但Fortran wiki完美地展示了它。

我的问题是:使用“模块过程”而不是“模块函数”或“模块子例程”的替代语法有什么好处,即过程类型、参数和意图在子模块文件中不重复?看来这只会使代码维护变得复杂,因为现在需要打开两个文件才能理解子例程或函数。我在这里错过了一些隐藏的好处吗(除了保存复制/粘贴之外)?

dww*_*ork 3

好处会在代码生命周期的后期显现出来。如果您必须更改函数的签名,则只需在一个位置进行更改。

  • 我明白你的观点,我认为这主要是一个偏好问题。C 和 C++ 具有相同的“问题”,即头文件和实现文件之间的分割。我个人觉得必须进行两次相同的更改非常烦人。 (2认同)