2017-10-20 86 views
-2

我有一个运行一系列子例程的fortran程序。其中的第一个从.txt文件读取数据的负载。所有变量都在另一个文件中定义,该文件与程序和每个子例程中的'include'一起包含。我怎样才能最好地将变量传入和传出各种子例程?Fortran 08中的'全局变量'?

+2

通过参数列表传递变量,使用派生类型适当。全局变量是一个坏主意。 –

+0

请阅读[问]。你应该显示你的代码。我不清楚你到底在做什么以及你想做什么。另见[mcve]。 –

+1

即我的意思是,它们是可以在子程序中改变的变量吗?或常量?你有什么问题?问题设计?或者如何编码?你想看看我们的一些代码吗?如果是的话,我们首先需要看到你的一些代码。同样参加[巡演],这很有用,说实话,我不仅仅是在嘲笑每个人都是一个混蛋。 –

回答

2

考虑将COMMON块转换为模块,然后只导入通过use some_module, only: var1, var3, var6实际使用的变量。由于各种原因,include文件是一个坏主意,尤其是因为当您更改它们时,它们不会触发make重建依赖它们的源文件。最好留下他们与其他可怕的F77isms ...

+3

*“他们不会触发make重建”*看起来你没有使用moern buid系统,或者没有正确设置你的依赖列表。 –

+0

感谢您的帮助,这里是主程序的第一部分(全部正开始后) '程序shear_3d' 隐无 !包含变量 包括“variables.f08” 通话的read_data 打印* “读取数据” 呼叫derive_variables(NX) 打印*, “派生变量” 呼叫init_matrices 打印*, “初始化矩阵” 呼叫initial_conditions' 和变量的文件是这样的: '整数I,J ,k,t 整数NX,NY,NETA,NZ,nt下 整数read_nx,read_ny,read_nz 双精度DX,DETA,DZ,DT' 与100行左右 – TomJ

+2

@TomJ它是完全不可能在这里读取的代码。您的问题包括任何相关信息。请确实阅读这些链接。 –