我注意到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 版本的英特爾(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