gpt4 book ai didi

具有隐式类型的 Fortran SAVE 属性

转载 作者:行者123 更新时间:2023-12-04 02:41:56 25 4
gpt4 key购买 nike

我正在尝试编译以下内容,但 gfortran 和 ifort 都报告了语法错误:

module test
implicit real*8 (a-h,o-z)
allocatable, save :: A(:)
end module test

这是 gfortran -c test.f90 输出:

allocatable, save :: A(:)
1
Error: Invalid character in name at (1)

ifort -c test.f90 输出:

test.f90(3): error #5277: Syntax error, found ',' following statement keyword
allocatable, save :: A(:)
------------^
test.f90(3): error #5082: Syntax error, found '::' when expecting one of: ( , <END-OF-STATEMENT> ; [
allocatable, save :: A(:)
------------------^
compilation aborted for test.f90 (code 1)

但是,如果没有 save 属性,或者通过添加显式类型,它可以正常编译:

module test
implicit real*8 (a-h,o-z)
allocatable :: A(:)
end module test

module test
implicit real*8 (a-h,o-z)
real*8, allocatable, save :: A(:)
end module test

由于两个编译器都报告语法错误,我想知道这是否是错误,或者是否有人知道可能出了什么问题?

最佳答案

这不是错误。从最新 Fortran 标准(或更易读形式的 Metcalf、Reid 和 Cohen)的第 5.4.2 节中,allocatable 语句可以以以下形式使用:

allocatable [::] array-name [ (array-spec) ] [, array-name [ (array-spec) ]] ...

因此,您必须在单独的语句中使用allocatablesave。您使用的两个编译器都报告了错误,因为它们需要 allocatable 之后的数组名称,但它们遇到了逗号。

关于具有隐式类型的 Fortran SAVE 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19712160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com