我想检查派生类型中的指针是否已经定义。我编写了以下简单代码来向您展示我的问题:
program test
implicit none
type y
real(8), pointer :: x(:)
end type y
type(y), pointer :: w(:)
allocate(w(2))
allocate(w(1)%x(2))
write(*,*) associated(w(1)%x), associated(w(2)%x)
end program test
使用 gFortran 4.4.1 编译此代码并在 Ubuntu 上运行它会得到结果:
T F
而在 Windows Vista 上使用英特尔 Fortran 编译器 11.0 编译的相同代码提供:
T T
第一个结果(gFortran)是我真正期待的。但英特尔编译器提供不同结果的事实让我担心我的代码可能不正确。我对这个例子中的指针做错了什么吗?有什么想法或解释吗?
非常感谢您的帮助!