[英]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.