以下
之类的模块之间是否存在显着差异MODULE module1
USE module2
IMPLICIT NONE
:
CONTAINS
SUBROUTINE subroutine1
IMPLICIT NONE
:
END SUBROUTINE subroutine1
SUBROUTINE subroutine2
IMPLICIT NONE
:
END SUBROUTINE subroutine2
END MODULE module1
和另一个如下
MODULE module1
IMPLICIT NONE
:
CONTAINS
SUBROUTINE subroutine1
USE module2
IMPLICIT NONE
:
END SUBROUTINE subroutine1
SUBROUTINE subroutine2
IMPLICIT NONE
:
END SUBROUTINE subroutine2
END MODULE module1
除了在第一种情况下两个子程序都看到模块2?
答案 0 :(得分:3)
可能很重要且应该注意的差异在于
MODULE module1
USE module2
module1
默认情况下也会导出module2
的所有公共符号。只在子例程中使用module2
时才会发生这种情况,因为模块没有看到它。
所以:
module module2
integer int
end module
module module1
use module2
end module
use module1
print *, int
end
是可能的,但是
module module2
integer int
end module
module module1
contains
subroutine s
use module2
end subroutine
end module
use module1
print *, int
end
不是。
当然,only
子句以及private
和public
语句可以更精细地控制此行为。