macos - gfortran 是否可以使用 MOLD 进行分配?

标签 macos gfortran allocation

我正在尝试使用 gfortran 在 Mac 上编译相当现代的 fortran 代码。像这样的线条......

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 自版本 7.something 以来已经能够支持 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 错误的副本 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80708或者关系密切。你必须等待修复。我会把你的代码放在这个错误的评论中,而不是打开一个新的。

关于macos - gfortran 是否可以使用 MOLD 进行分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356803/

相关文章:

macos - 为什么我升级到 OSX Yosemite 后不能用 gfortran 编译? gfortran 错误 : libgfortran. 规范:没有这样的文件或目录

c - 用 char* 分配内存

c - 如何在 .bundle 文件中模拟 objdump --dwarf=decodedline?

linux - 我可以使用多少个管道有限制吗?

fortran - 以 '#' 开头和/或以 'c' 结尾的常量在 Fortran 中意味着什么?

fortran - 如何停止子程序并举旗?

c - MPI 段。将发送/接收与动态分配一起使用时出错

java - Java 中的链接方法与创建临时变量是否会影响内存分配?

iphone - 如何在编写漂亮代码的同时避免扩展 NSArray 和在 Java 中思考

python语言环境奇怪的错误。这里到底发生了什么?