不,這樣做很好。您在use
聲明中所做的全部工作是通過使用協會訪問模塊中定義的變量和函數。它不是像每次他們是use
'd(但實際上重新聲明它們)都聲明變量。
唯一的是循環依賴,其中模塊A
使用模塊B
和模塊B
使用模塊A
警惕。這是不允許的。
編輯:來自Metcalf 等。 Fortran 95/2003解釋說, 72:
模塊可能包含訪問其他模塊的use
語句。它不能通過use
聲明直接或間接訪問自己,例如a
訪問b
和b
訪問a
。
雖然這個引用不能直接回答你的問題,但它重申,你唯一不能做的事情是循環依賴。所以以下是完全有效的:
module one_def
implicit none
integer, parameter :: one=1
end module one_def
module two_def
use one_def, only : one
implicit none
integer, parameter :: two=one+one
end module two_def
program test
use one_def, only : one
use two_def, only : two
implicit none
print*, two == one+one ! This prints .True.
end program
不,這樣做很好。你用'use'語句做的所有事情都是把變量引入子程序範圍。它不像每次「使用」時都聲明變量。唯一需要注意的是循環依賴*,其中模塊「A」使用模塊「B」,模塊「B」使用模塊「A」。這是不允許的。 – Chris 2012-02-03 14:01:18
謝謝,讓這個答案,所以我可以給你一個複選標記! – drjrm3 2012-02-03 14:04:55
謝謝,我已經完成並添加了更多信息。 – Chris 2012-02-03 14:20:38