Không, thực hiện điều này là tốt. Tất cả những gì bạn đang làm với câu lệnh use
là cung cấp quyền truy cập vào các biến và chức năng được xác định trong mô-đun của bạn qua sử dụng liên kết. Nó không giống như khai báo các biến mỗi khi chúng là use
'd (chúng thực sự được redeclared).
Điều duy nhất cần phải cảnh giác với những phụ thuộc vòng tròn, nơi mô-đun A
sử dụng mô-đun B
và module B
sử dụng mô-đun A
. Điều này không được phép.
Chỉnh sửa: Từ Metcalf et al. Fortran 95/2003 giải thích, pg. 72:
Mô-đun có thể chứa các câu lệnh use
truy cập các mô-đun khác. Nó không được tự truy cập trực tiếp hoặc gián tiếp thông qua một chuỗi các tuyên bố use
, ví dụ: a
truy cập b
và b
truy cập a
.
Trong khi báo giá này không trực tiếp trả lời câu hỏi của bạn, nó nhắc lại rằng điều duy nhất bạn không thể làm là có sự phụ thuộc vòng tròn. Vì vậy, các điều sau đây hoàn toàn hợp lệ:
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
Không, thực hiện điều này là tốt. Tất cả những gì bạn đang làm với câu lệnh 'use' là đưa các biến vào một phạm vi chương trình con. Nó không giống như khai báo các biến mỗi khi chúng là 'use''d. Điều duy nhất cần thận trọng là * phụ thuộc vòng tròn *, trong đó mô-đun 'A' sử dụng mô đun' B' và mô-đun 'B' sử dụng mô-đun' A'. Điều này không được phép. – Chris
cảm ơn, hãy đặt câu trả lời này để tôi có thể cung cấp cho bạn một dấu kiểm! – drjrm3
Cảm ơn, tôi đã làm và thêm một chút thông tin nữa. – Chris