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
Fortran 使用包含、接口、模块或单独的子例程?_Fortran_Fortran90_Gfortran_F2py - Fatal编程技术网

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

Fortran 使用包含、接口、模块或单独的子例程?,fortran,fortran90,gfortran,f2py,Fortran,Fortran90,Gfortran,F2py,我已经用Fortran编写了一些代码,但对如何构造更长的代码没有信心 我经常想要假定形状数组。当使用接口块、模块或包含语句时,这似乎是可能的。但是,将子例程置于主代码之外,而不使用任何这些方法在许多情况下都有效,但对于假定形状数组 在什么情况下,每种方法都是首选的,主要区别是什么 在每种方法中,变量是以何种方式共享/继承的?接口块是额外的工作。您必须编写程序块,并在程序更改时对其进行修改。接口块对于使用ISO C绑定工具调用C语言例程等用途非常有用 在主程序的“contains”下有一个子例程的

我已经用Fortran编写了一些代码,但对如何构造更长的代码没有信心

我经常想要
假定形状数组
。当使用
接口块
模块
包含
语句时,这似乎是可能的。但是,将子例程置于主代码之外,而不使用任何这些方法在许多情况下都有效,但对于
假定形状数组

在什么情况下,每种方法都是首选的,主要区别是什么


在每种方法中,变量是以何种方式共享/继承的?

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

在主程序的“contains”下有一个子例程的缺点是所有局部变量都是继承的。我认为程序应该更加孤立


模块使过程更加隔离,变量的访问更加清晰——除非您过度使用模块变量。此外,重用其他程序中模块的过程更容易。

最后一点是另一个问题,请在其他地方询问。但首先搜索,这里还有其他问题。我删除了最后一个问题。是的,“副本”中的答案很有帮助!但是我没有找到我使用的关键词。一定程度的重复是好的,因为它可以帮助人们在不同措辞的问题中找到答案,所以不用担心。关键是,在这里抄袭另一个问题的答案是毫无意义的。试着在你的帖子里只写一个问题(见过于宽泛的结尾)。继承也可能是一个单独的问题。当涉及到访问变量时,它发生在主机关联中。
中包含的任何内容都可以访问主机的变量。模块过程可以访问模块变量,内部过程可以访问宿主程序或宿主过程。因此
包含的
语句后面的子例程不会相互继承变量吗?我可以安全地在同一
包含的
块中的子例程中使用重叠的变量名集,无论它是在主代码中还是在模块中?或者被调用方是从调用子例程继承的吗?例如,如果您必须回答与答案中基本相同的单词,则表明它可能是重复的。