Fortran Coder

标题: 数组传递问题 [打印本页]

作者: Viola    时间: 2024-3-28 00:24
标题: 数组传递问题
本帖最后由 Viola 于 2024-3-28 00:28 编辑

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

[Fortran] 纯文本查看 复制代码
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


[Fortran] 纯文本查看 复制代码
 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





1111.png (29.75 KB, 下载次数: 32)

1111.png

作者: Transpose    时间: 2024-3-28 08:41
可能是ifx还没适配好
作者: Viola    时间: 2024-3-28 17:27
本帖最后由 Viola 于 2024-3-28 17:34 编辑
Transpose 发表于 2024-3-28 08:41
可能是ifx还没适配好

原来是这样,谢谢回复!我干脆更新了oneAPI没有这个问题了
--------------------------------------------
编辑一下,看错了,更新后还是这样

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

改成ifort试试




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2