派生型内のポインターが既に定義されているかどうかを確認したいと思います。私の問題を示すために、次の簡単なコードを書きました。
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
一方、インテル Fortran コンパイラー 11.0 を使用して Windows Vista でコンパイルされた同じコードは、以下を提供します。
T T
最初の結果 (gFortran) は、私が実際に期待しているものです。しかし、Intel コンパイラが異なる結果を提供するという事実は、私のコードが正しくないのではないかと心配しています。この例のポインターで何かひどく間違ったことをしていますか? アイデアや説明はありますか?
ご協力いただきありがとうございます。