Я хотел бы проверить, был ли указатель внутри производного типа уже определен или нет. Я написал следующий простой код, чтобы показать вам мою проблему:
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 с компилятором Intel Fortran 11.0, обеспечивает:
T T
Первый результат (gFortran) - это то, что я на самом деле ожидаю. Но тот факт, что компилятор Intel дает другой результат, заставляет меня опасаться, что мой код может быть неправильным. Я делаю что-то ужасно не так с указателями в этом примере? Любая идея или объяснение?
Большое спасибо заранее за вашу помощь!