簡體   English   中英

gfortran 可以用 MOLD 分配嗎?

[英]Can gfortran allocate with MOLD or not?

我正在嘗試使用 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的重復或者非常密切相關。 你必須等待修復。 我會把你的代碼放在這個錯誤的評論中,而不是打開一個新的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM