关于数组传递的问题
在module中定义:INTEGER DEMENSION(1,2) :: A
然后在子程序中:
SUROUTINE TEST
INTEGER DEMENSION(:,:) :: A
END SUROUTINE TEST
这样仅仅是写在形参表中就会导致错误,但是如果定义的数组是一维的话则不会出错。
因为程序运行环境比较复杂,包的错误和MPI有关,因此不确定是环境的问题还是这样传递数组有问题。
如果你不确定是环境的问题还是这样传递数组有问题。请用一个简短的代码尝试重现该问题。
你需要明确的描述你的问题,才能让别人听懂。
1. SUBROUTINE TEST 和 module 的关系?是contains在module里,还是另外的程序单元?
2. SUBROUTINE TEST 是否 use 了 module?
3. SUBROUTINE TEST 是否有虚参?并且 A 是否是虚参? vvt 发表于 2021-1-25 08:19
如果你不确定是环境的问题还是这样传递数组有问题。请用一个简短的代码尝试重现该问题。
你需要明确的描述 ...
不好意思写的有点不清楚了
TEST和module处于不同的程序单元,但是use了module
SUROUTINE TEST(A)
INTEGER DEMENSION(:,:) :: A
END SUROUTINE TEST
TEST的A为形参,由调用TEST的子程序传入,调用TEST的子程序contain在module中
那么虚参的 A 和 module 里面的 a 会发生命名冲突。尝试改一下虚参的A的名字,或者 use 时用 use modulename , aa => a 对 module 中的 a 改临时名字。 遇到问题一定要给出 错误提示。目测你是语法错误,integer后面需要逗号。 vvt 发表于 2021-1-25 12:09
那么虚参的 A 和 module 里面的 a 会发生命名冲突。尝试改一下虚参的A的名字,或者 use 时用 use modulenam ...
理解了 感谢!
页:
[1]