Viola 发表于 2024-3-28 00:24:53

数组传递问题

本帖最后由 Viola 于 2024-3-28 00:28 编辑

初学Fortran,边用边学,还请大佬们不吝赐教。我在给程序新加了一个module并调用后,没有编译错误但出现了问题:为什么进入子程序后,H的维度变成了(1:1),而不是子程序中声明的DIMENSION(N)呢?
我简化了一下出现问题的程序:

MODULE Source1

IMPLICIT NONE

PUBLIC :: sub_a

CONTAINS

SUBROUTINE sub_a (N,H)

INTEGER, PARAMETER :: wp = SELECTED_REAL_KIND(12,307)
INTEGER, INTENT(in) :: N
REAL(wp), DIMENSION(N), INTENT(inout) :: H
INTEGER::k

DO k = 2,N
H = H+H
END DO

END SUBROUTINE sub_a


END MODULE Source1

PROGRAM Console1

USE Source1
IMPLICIT NONE


INTEGER, PARAMETER :: wp = SELECTED_REAL_KIND(12,307)
INTEGER, PARAMETER :: k = 20
REAL(wp), DIMENSION(:), ALLOCATABLE :: v

ALLOCATE(v(k))
v(:) = 0.0

CALL sub_a (k,v)

END PROGRAM Console1





Transpose 发表于 2024-3-28 08:41:02

可能是ifx还没适配好

Viola 发表于 2024-3-28 17:27:55

本帖最后由 Viola 于 2024-3-28 17:34 编辑

Transpose 发表于 2024-3-28 08:41
可能是ifx还没适配好
原来是这样,谢谢回复!我干脆更新了oneAPI没有这个问题了
--------------------------------------------
编辑一下,看错了,更新后还是这样{:4_117:}

Transpose 发表于 2024-3-28 19:41:40

Viola 发表于 2024-3-28 17:27
原来是这样,谢谢回复!我干脆更新了oneAPI没有这个问题了
-------------------------------------------- ...

改成ifort试试
页: [1]
查看完整版本: 数组传递问题