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