gpt4 book ai didi

fortran - 将未分配的数组传递给没有显式接口(interface)的例程有什么问题吗?

转载 作者:行者123 更新时间:2023-12-04 19:12:28 26 4
gpt4 key购买 nike

考虑:

program main
real, allocatable, dimension(:) :: foo
integer n
n=10
call dofoo(foo,n,1)
allocate(foo(n))
call dofoo(foo,n,0)
end program main

subroutine dofoo(foo,n,mode)
real foo(n)
integer i,n,mode
if(mode.eq.1)then
n=6
return
endif
do i=1,n
foo(i)=i
enddo
return
end subroutine dofoo

上面的代码有什么问题吗? (它适用于 gfortran)我第一次传入一个未分配的数组,但我没有触及它——标准中是否有任何东西可能导致它以系统依赖的方式运行?

最佳答案

你几乎已经回答了你自己的问题。是的,按照标准,如果您在范围内没有接口(interface),则将未分配的可分配数组作为实际参数传递总是非法的。

如果您在范围内有一个接口(interface),则只有在虚拟参数也是可分配的情况下才合法。

是的,我被它咬了。我的工作是在调​​用之前分配为零大小。

关于fortran - 将未分配的数组传递给没有显式接口(interface)的例程有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496510/

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