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

clu*_*mer 4 arrays fortran subroutine

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

Error: Dummy argument 'locs' with INTENT(IN) in variable definition context (ALLOCATE object) at (1)
Run Code Online (Sandbox Code Playgroud)

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

    RECURSIVE SUBROUTINE together(locs, LL, RL)

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


    ALLOCATE(locs(LL,RL))


END SUBROUTINE together
Run Code Online (Sandbox Code Playgroud)

fra*_*lus 5

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

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

Fortran 2008标准在5.3.10节中说过

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

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