Macos gfortran是否可以配置模具?
我正试图用gfortran在Mac上编译一个相当现代的fortran代码。像这样的台词Macos gfortran是否可以配置模具?,macos,gfortran,allocation,Macos,Gfortran,Allocation,我正试图用gfortran在Mac上编译一个相当现代的fortran代码。像这样的台词 allocate(sce, mold=sct) 获取如下错误: Error: Array specification or array-valued SOURCE= expression required in ALLOCATE statement 那么,gfortran似乎理解源代码,但不理解模具。但是,我的gfortran是最近的: gcc version 8.2.0 (MacPorts gcc8
allocate(sce, mold=sct)
获取如下错误:
Error: Array specification or array-valued SOURCE= expression required in ALLOCATE statement
那么,gfortran似乎理解源代码
,但不理解模具
。但是,我的gfortran是最近的:
gcc version 8.2.0 (MacPorts gcc8 8.2.0_3)
我看到一些网页声称gfortran从7.0版开始就能够支持MOLD
。因此,它应该能够用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
这将返回我在上面遇到的错误。您可能认为派生类型的定义有点奇怪,甚至没有必要。好的,从中获取的原始代码不是我的代码,我也不能对它做太多的修改,实际上,这种结构确实有它的用途,因为我没有时间去讨论。谢谢。我确信这是这个GCC错误的重复,或者是非常密切相关的。你必须等待修复。我将把你的代码放在这个bug的注释中,而不是打开一个新的。这不是关于supooting mold,而是关于缺少的数组规范。这是一个已知的bug,但现在应该已经修复了。我写的测试程序或我的测试程序都没有问题(在Linux上使用7.3)。因此,请提供一个完整的示例(代码中可能有问题),供我们进一步探讨。您的代码(带有明显的必要扩展)在GCC 6和GCC 7中编译正常,这会导致GCC 5中提到的错误。在Linux.GCC 8上测试过,也可以编译。@VladimirF但是AFAICT,我自己也有GCC 8。那么,不知何故,我的版本有什么错误/过时的地方吗?你是不是碰巧在Mac电脑上测试?谢谢