gpt4 book ai didi

fortran - 写入假定大小的数组会导致 "upper bound shall not be omitted..."

转载 作者:行者123 更新时间:2023-12-05 03:07:17 29 4
gpt4 key购买 nike

我正在编写代码以添加闭源有限元框架,这迫使我(由于依赖于一些旧的 F77 风格方法)在一个地方依赖假定大小的数组。

是否可以将假定大小的数组写入标准输出,无论其大小如何?

这是行不通的:

module fun

implicit none

contains

subroutine writer(a)
integer, dimension(*), intent(in) :: a
write(*,*) a
end subroutine writer

end module fun


program test
use fun
implicit none

integer, dimension(2) :: a

a(1) = 1
a(2) = 2

call writer(a)

end program test

使用 Intel Fortran 编译器抛出

error #6364: The upper bound shall not be omitted in the last dimension of a reference to an assumed size array.

最佳答案

编译器不知道假定大小的数组有多大。它只有第一个元素的地址。您有责任告知它有多大。

 write(*,*) a(1:n)

等效地,您可以使用显式大小的数组

integer, intent(in) :: a(n)

然后你可以做

write(*,*) a

关于fortran - 写入假定大小的数组会导致 "upper bound shall not be omitted...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48013303/

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