【发布时间】:2013-01-27 17:45:15
【问题描述】:
首先,我知道在 fortran(和一般编程)中使用公共块是一个坏主意。但是,我正在更新其他人的代码,我不想弄乱已知有效的东西。
其次,我知道我应该发布一些更具体的内容。如果我知道如何将其减少为小东西,我会的。但是,由于我知道,而且我认为您不会欣赏 2500 行代码,因此我无法发布具体示例。
考虑到这一点,我无法描述我的问题。
我正在更新别人的 fortran 代码。这家伙使用了几 (4) 个通用块来设置全局变量。出于某种原因,当我调用使用这样一个块的函数时,它的所有值都是 0。以前有人遇到过吗?有谁知道为什么会发生这种情况?如何重现这个?检查这一点的任何起点都会有所帮助。
为了它的价值,所说的公共块被声明为
common /set/ block,x,y,z,llx,lly,llz,ilx,ily,ilz,third,third2
block 是一个 4D 数组。 x、y 和 z 是一维数组。 llx、lly 和 llz 是 double precision 类型。其余为integer 类型。
在调用任何函数之前,在主程序中声明和初始化公共块。
【问题讨论】:
-
即使您之前设置了它们也为零?公共块的所有实例中声明的尺寸是否相等?
-
不能把通用块升级成模块吗?唯一的区别是
use模块在当前使用公共块的地方。主要优点是您只需在一处声明变量,顺序无关紧要。 -
@sigma 我可以,但这需要谨慎。如果可以的话,我宁愿避免这种情况。
-
@VladimirF 是的,是的。我测试的变量是 llx
-
如果你有 COMMON 块,你也有任何 EQUIVALENCEing 吗?
标签: fortran fortran-common-block