首页 > 解决方案 > 'DIMENSION' 类型与 fortran 中的'假定大小数组'

问题描述

在处理旧的库和例程时,我经常遇到以下变量声明,DIMENSION这些变量声明会导致例程的奇怪行为。如果我DIMENSION变成REAL(dp).

SUBROUTINE FFT(DATA_REAL, DATA_IMAGINARY, N)

   DIMENSION :: DATA_REAL(*), DATA_IMAGINARY(*)     ! The code behaves strangely.
(*)!REAL(dp) :: DATA_REAL(*), DATA_IMAGINARY(*)     ! If I use this commented declaration instead, the code behaves just fine.

...

起初我看到它们的时候,我以为这些只是一些小错误。但是我仍然经常遇到DIMENSION许多库、子程序的此类声明。

因此,在制定例程时,这些很可能不是错误,而奇怪的行为可能源于从旧的 fortran 到相对较新的 fortran(例如 f90)的一些更改的标准或精确的东西。但事实并非如此,因为据我所知,f90 能够正确处理其哥哥的标准(例如 f77)。

有没有人知道这种代码的行为?

标签: fortran

解决方案


推荐阅读