я заметил странное поведение с gfortran, версия я использую этоGfortran демонстрирует странное поведение, это ошибка?
GNU Fortran (MacPorts gcc5 5.2.0_0) 5.2.0
моя ОС OS X YOSEMITE 10.10.3 (14D136)
я запустить следующий код
program test
implicit none
type :: mytype
real(kind=8),dimension(:,:,:),allocatable :: f
end type
type(mytype),dimension(:,:),allocatable :: tab
integer i,j
allocate(tab(3,8))
do i=1,3
do j=1,8
allocate(tab(i,j)%f(i,i,i))
enddo
enddo
call check_shapes(tab(:,1))
contains
subroutine check_shapes(arg)
integer :: n,k
type(mytype),dimension(:) :: arg
n=size(arg)
do k=1,n
print*,shape(arg(k)%f)
enddo
end subroutine
end program
выход, как ожидается
1 1 1
2 2 2
3 3 3
однако, изменить способ я определить фиктивные аргументы в подпрограмме
type(mytype),dimension(:) :: arg
в
class(mytype),dimension(:) :: arg
вводящего класс вместо типа для фиктивного аргумента, я следующий вывод
2 2 2
3 3 3
1 1 1
Это ошибка? или я чего-то не хватает?
отмечают, что она отлично работает с ifort версии Intel (R) 64, версия 15.0.3.187 сборки 20150408
Те же ошибки, что и этот? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61337 –
Или, скорее, этот, см. последний комментарий и его код https://gcc.gnu.org/bugzilla/show_bug.cgi?id = 58043 Определенно ошибка. –
Я воспроизвел gfortran 4.8.3. Кажется, исправлено на багажнике. – francescalus