Я пытаюсь скомпилировать довольно современный код на Фортране для Mac с помощью gfortran.Строки, подобные этой ...
allocate(sce, mold=sct)
получают такие ошибки:
Error: Array specification or array-valued SOURCE= expression required in ALLOCATE statement
Похоже, что gfortran понимает SOURCE
, но не MOLD
.Тем не менее, мой gfortran недавно:
gcc version 8.2.0 (MacPorts gcc8 8.2.0_3)
Я видел веб-страницы, на которых утверждается, что gfortran поддерживает MOLD
начиная с версии 7. что-то.Так что, безусловно, он должен быть в состоянии сделать это с 8.2.0.Это не правда?Что-то смешное в версии для Mac?Кто-нибудь может подсказать, какая еще проблема может быть?
РЕДАКТИРОВАТЬ: Если кто-то еще там, этот игрушечный код работает нормально:
program awm
integer, dimension(:), allocatable :: sct,sce
integer :: nspec = 100
allocate(sct(nspec))
allocate(sce, mold=sct)
end program
Но когда sct и sce являются производными типами, он разваливается:
program awm
type :: r1d
real, allocatable :: a(:)
end type
type(r1d), dimension(:), allocatable :: sct,sce
integer :: nspec = 100
allocate(sct(nspec))
do i = 1,nspec
allocate(sct(i)%a(10))
enddo
allocate(sce, mold=sct)
end program
Это возвращает ошибку, которую я имел выше.Вы можете подумать, что определение производного типа является странным, даже ненужным.Ну, исходный код, из которого это взято, не мой код, и я не могу его сильно изменить, и на самом деле, эта структура имеет свое применение по причинам, на которые у меня нет времени вдаваться.Спасибо.