Variable "U" masks variable in parent scope Task1.f90(5, 1): First declaration REAL, INTENT(IN), DIMENSION(nx + 5, ny + 5, 4)怎么调整作用域来解决这个问题
时间: 2024-02-25 13:51:48 浏览: 107
地形工具:MicroVerse - Masks v1.7.27
要解决这个问题,你可以通过将子程序中的变量声明放在子程序的局部作用域中来调整作用域。这样,变量就只在子程序内部可见,而不会与父作用域中的同名变量发生冲突。例如,你可以在子程序中使用一个块,将变量声明限定在块内部,如下所示:
```
SUBROUTINE mySubroutine(nx, ny, U)
INTEGER, INTENT(IN) :: nx, ny
REAL, INTENT(IN) :: U(nx+5, ny+5, 4)
! 在这里开始一个块
BLOCK
REAL :: U_new(nx, ny, 4)
! 在这里定义一个新的变量U_new,其作用域仅限于块内部
! 进行一些计算,使用变量U和U_new
...
END BLOCK ! 结束块
END SUBROUTINE mySubroutine
```
在这个例子中,U_new是一个新的变量,其作用域被限制在块内部。这样,即使在子程序中使用了与父作用域中同名的变量U,也不会与父作用域中的U发生冲突。
阅读全文