No, está bien hacer esto. Todo lo que está haciendo con la instrucción use
es proporcionar acceso a las variables y funciones definidas en su módulo a través de la asociación de uso . No es como declarar variables cada vez que son use
'd (de hecho, se vuelven a declarar).
La única cosa a tener cuidado con las dependencias circulares son , en donde el módulo A
utiliza el módulo y el módulo B
B
utiliza el módulo A
. Esto no esta permitido.
Editar: De Metcalf y otros. Fortran 95/2003 explicado, pág. 72:
Un módulo puede contener declaraciones use
que acceden a otros módulos. No debe acceder a sí mismo directa o indirectamente a través de una cadena de declaraciones use
, por ejemplo a
teniendo acceso a b
y b
teniendo acceso al a
.
Si bien esta cita no responde directamente a su pregunta, reitera que realmente lo único que no puede hacer es tener una dependencia circular. Entonces el siguiente es perfectamente válido:
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, está bien hacer esto. Todo lo que está haciendo con las declaraciones 'use' es llevar variables al alcance de un subprograma. No es como declarar variables cada vez que se usan. Lo único que hay que tener en cuenta son las * dependencias circulares *, donde el módulo 'A' utiliza el módulo' B' y el módulo 'B' usa el módulo' A'. Esto no esta permitido. – Chris
gracias, haga de esto una respuesta para que pueda darle una marca de verificación! – drjrm3
Gracias, lo he hecho y he añadido un poco más de información también. – Chris