如下所示的模块之间是否存在显著差异
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除了在第一种情况下两个子程序都会看到module2之外?
发布于 2016-04-07 15:41:12
有可能是重要的,而且应该注意到的区别是
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语句可以更详细地控制这种行为。
https://stackoverflow.com/questions/36480654
复制相似问题