昨天发了个求助帖,不知道怎么了反正今天找不到了,什么提示都没有。不知道是网络问题还是哪些地方违规了被删除了。如果是后者,还请斑竹指出我哪里违规了,避免下次再犯。
关于我的问题是这样的。我在用VS2008,要把两个数值模型结合成一个。由于两个模型中有重复的变量,我正在处理如何统一这些变量的问题。在这一过程中,我发现了一个很奇怪的现象。用简单的言语描述就是:
用module A定义了一个变量n,在module B中引用了module A, 然后再在子程序C中用了module B,然后设定了implicit none,后来发现在没有定义x的情况下,竟然通过了编译。如果屏蔽子程序CC中的module B,则报错提示未对x定义。
为了方便阅读,我用等效的一段代码来描述我的问题。
[Fortran] 纯文本查看 复制代码 module A
integer::n
end module A
module B
use A
implicit none
real,allocatable::y(:)
contains
subroutine Kk
n=3
allocate(y(n))
end subroutine kk
end module B
program xx
use B
implicit none
call kk
call cc
pause
end program
subroutine cc
use B
implicit none
integer::I
do I=1,N
write(*,*)I,N
pause
enddo
end subroutine
运行的结果是 能正确显示N=3
也就是在Fortran中说如果一个模块A引用了模块B(模块A中使用 use B),那么在用模块A的时候,也能用模块B中的变量么?
|