No, è giusto farlo. Tutto quello che stai facendo con la dichiarazione use
sta fornendo l'accesso alle variabili e alle funzioni definite nel tuo modulo tramite usa l'associazione. Non è come dichiarare variabili ogni volta che sono use
'd (sono comunque redeclared comunque).
L'unica cosa da stare attenti a sono dipendenze circolari, dove modulo A
usa le modulo B
e il modulo B
usa le modulo A
. Questo non è permesso.
Modifica: Da Metcalf e altri. Fortran 95/2003 ha spiegato, pag. 72:
Un modulo può contenere istruzioni use
che accedono ad altri moduli. Non deve accedere direttamente o indirettamente tramite una catena di istruzioni use
, ad esempio a
, accesso a b
e b
, accesso a a
.
Mentre questa citazione non risponde direttamente alla tua domanda, ribadisce che in realtà l'unica cosa che non puoi fare è avere una dipendenza circolare. Quindi il seguente è perfettamente valido:
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
No, va bene così. Tutto quello che stai facendo con le istruzioni 'use' sta portando le variabili in un ambito di sottoprogrammi. Non è come dichiarare le variabili ogni volta che sono "usate". L'unica cosa di cui diffidare sono le * dipendenze circolari *, dove il modulo 'A' usa il modulo' B' e il modulo 'B' usa il modulo' A'. Questo non è permesso. – Chris
grazie, fai una risposta così posso darti un segno di spunta! – drjrm3
Grazie, ho fatto e aggiunto un po 'più di informazioni. – Chris