繁体   English   中英

FORTRAN - 子例程中的可分配数组

[英]FORTRAN - allocatable array in subroutine

我正在尝试在子例程中使用可分配的数组,但编译器抱怨这一点

Error: Dummy argument 'locs' with INTENT(IN) in variable definition context (ALLOCATE object) at (1)

我唯一能找到的是我应该使用一个显式接口,我正在做。 这里是子程序的相关代码:

    RECURSIVE SUBROUTINE together(locs, LL, RL)

    INTEGER, DIMENSION(:,:), ALLOCATABLE, INTENT(IN)            :: locs
    INTEGER, INTENT(IN)                                         :: LL, RL


    ALLOCATE(locs(LL,RL))


END SUBROUTINE together

编译器的错误消息是对问题的描述。 随着INTENT(IN)你是说目标不会改变,但你去尝试ALLOCATE它。

是的,调用需要一个显式接口,但这不是问题。

Fortran 2008标准在5.3.10节中说过

具有INTENT(IN)属性的非指针对象不应出现在变量定义上下文中

分配就是这样一个背景:第16.6.7节,第(11)节。

locs伪参数是可分配的,并且具有INTENT(IN)属性 - 这里的intent属性指示调用过程向子例程提供信息。

INTENT(IN)属性的结果是您无法更改locs的分配状态(或值)。 您的ALLOCATE语句正在尝试这样做。

尝试在主程序中分配数组,然后当locs被推送到子程序时,使用INTENT(INOUT)告诉编译器你也想要更改数组的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM