gpt4 book ai didi

arrays - 最近的 Fortran 标准中提供了此功能吗?

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

我惊讶地发现,由于数组大小不匹配,我使用的代码在使用 gcc v.4.4.6 构建时无法运行。它在使用 gcc v. 4.7.3 构建时运行良好。我创建了一个最小的工作示例来显示问题的根源:

program main

implicit none

integer, allocatable, dimension(:,:) :: array_a
integer, allocatable, dimension(:,:) :: array_b

allocate(array_a(5,2))
allocate(array_b(2,1))

array_a = 1

array_b = array_a

print *, array_a
print *, array_b

end program main

当使用 gcc v.4.4.6 构建时,它会在运行时崩溃并出现错误:

At line 13 of file main.f90 Fortran runtime error: Array bound mismatch, size mismatch for dimension 1 of array 'array_b' (1/4)

当使用 gcc v. 4.7.3 构建时,它会产生以下输出:

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

请注意,它会自动调整“array_b”的大小以匹配“array_a”的大小。这是我看到的更新的 Fortran 标准提供的“功能”吗?

最佳答案

您正在使用 Fortran 2003 功能 - 分配时自动重新分配数组。它尚未在 gcc-4.4 中实现。

此功能意味着之前分配给不一致形状的数组 b 会自动重新分配给分配右侧的形状。对于 Fortran 2003 功能,您必须使用最新的编译器版本(不仅是 GCC)。

关于arrays - 最近的 Fortran 标准中提供了此功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642375/

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