我有2个模块:A和B.A使用B.A读取两个数字,然后调用B中需要这些数字的子程序。如何在A中读入这两个数字,在B中的子程序中可用,而不必将它们添加到子程序的调用中?
答案 0 :(得分:1)
我知道有两种可能性:
C
,并在A
和B
中使用这些数字。你说你不想要选项1但是,选项2可能对你没用。
(未经测试的)示例是
module A
contains
subroutine readNumbers()
use C, only: a1, a2
use B, only: theFinalRoutine
!code to set a1 and a2
call theFinalRoutine
end subroutine readNumbers
end module A
module B
contains
subroutine theFinalRoutine()
use C, only: a1, a2
!do some things with a1 and a2
end subroutine theFinalRoutine
end module B
module C
real :: a1, a2
end module C
program test
use A, only: readNumbers
call readNumbers()
end program test
这并不总是一个好主意,但它确实有助于避免数据情况下的循环依赖(而不是例程之间的依赖关系)。