Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 在什么情况下,您会使用;模块程序“;在创建单独的模块过程时是否在子模块中?_Module_Fortran_Fortran2008_Fortran2018 - Fatal编程技术网

Module 在什么情况下,您会使用;模块程序“;在创建单独的模块过程时是否在子模块中?

Module 在什么情况下,您会使用;模块程序“;在创建单独的模块过程时是否在子模块中?,module,fortran,fortran2008,fortran2018,Module,Fortran,Fortran2008,Fortran2018,我理解Fortran 2008+中子模块的一般好处,但我很难理解其中一个语法选项的好处 如果我想创建单独的模块过程(过程主体位于子模块中),我需要在父模块中创建一个接口。该接口必须包含子例程或函数标识符以及参数列表和意图。这一切都是有道理的 然后子模块包含过程的实现,但是有一个语法选择:我可以重复子例程或函数的签名,或者,我可以简单地在“模块过程”之后使用接口中的名称。我本来打算键入一个示例,但示例完美地显示了它 我的问题是:使用“模块过程”而不是“模块函数”或“模块子例程”的替代语法的好处是什

我理解Fortran 2008+中子模块的一般好处,但我很难理解其中一个语法选项的好处

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

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


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

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

我想我很难想象在不更改子例程本身的情况下更改签名的情况。我正在编写一个有人使用这种语法的代码,当我必须打开两个文件才能看到子程序和参数时,弄清楚发生了什么真的很痛苦。我明白你的意思,我相信这主要是偏好的问题。C和C++在头文件和实现文件之间的分割有相同的问题。我个人觉得要做两次同样的改变非常烦人。