【发布时间】:2019-09-16 14:40:50
【问题描述】:
我有一个模块:
module A
! derived data type definition
...
contains
subroutine initialize()
type(dtype), allocatable, dimension(:) :: var
! initialize the derived datatype variable "var"
end initialize
subroutine access()
! access derived datatype variable "var"
end access
end module A
在main 程序中,initialize 和access 函数在不同的位置被调用。考虑到这两个函数都是在同一个模块中定义的,我可以在不将变量 var 传递给 access() 函数的情况下访问 access 函数中的初始化变量吗?
【问题讨论】:
-
非常简单的答案是“是”,通过主机关联。我提出了一个重复的问题,该问题涉及各种细节,尽管它没有直接回答“是”方面。如果您需要有关“是”的原因的更多详细信息,请告诉我(并在示例代码中编辑更多详细信息)。
-
谢谢!从我从重复的问题中看到的,它并没有直接回答你提到的问题。所以我想知道我的问题是否真的是重复的。
-
即使派生类型变量在
initialize()函数内部动态分配,它仍然成立吗? -
如果您需要详细信息,请将它们添加到问题中。实际上,代码根本没有 no 模块或局部变量!
-
任何模块变量都可以在模块的过程中访问(除非 Fortran 2018
import语句阻止)。不管是派生类型,还是可分配类型(等等)。
标签: scope fortran subroutine