0
我有兩個模塊:A和B. A使用B.讀取兩個數字,然後調用B中需要這些數字的子例程。如何在B中的子例程中使用A讀入這兩個數字,而不必將它們添加到子例程的調用中?將一個數字從一個模塊轉移到另一個模塊
我有兩個模塊:A和B. A使用B.讀取兩個數字,然後調用B中需要這些數字的子例程。如何在B中的子例程中使用A讀入這兩個數字,而不必將它們添加到子例程的調用中?將一個數字從一個模塊轉移到另一個模塊
有兩種可能性,我所知道的:
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
這並不總是一個好主意,但它確實有助於避免數據的情況下循環依賴(而不是程序之間的依賴關係)。
除了通過例程的參數列表之外傳遞參數最多是一個可疑的練習。廣泛的實踐,我授予你,但可疑。 –
是的,我絕對同意,選項1是應該如何完成的 - 這只是OP明確要求如何在不增加通話的情況下做到這一點。 –
您可以使用COMMON。 :d – Jack