1

我正在使用旧版 Fortran 77 代码子例程,其中未在代码块顶部声明参数类型。

这是一个显示子例程最顶部的片段。

   SUBROUTINE BPASS(F1,F2,F3,F4,SI,N,A,IERR)
   REAL * 4 A( N ),FV( 4 )

综上所述,我认为这是一个长度为 typeA的数组,其大小相当于一个 C 。或者,是一个类型为 的长度数组。NREAL *4floatFV(4)4REAL *4

但是,F1,F2,F3,F4,SI,N,IERR如果未列出类型,则 的类型是什么?看来N应该是一个integer

我需要知道类型,以便我可以从 C++ 代码中调用子例程。对于未声明的类型是否有 Fortran 约定?

4

2 回答 2

6

默认情况下,Fortran 会将类型分配给integer名称以字母开头的变量,I,J,K,L,M,N并将类型分配real给所有其他未声明的变量。

我同意你对A和定义的解析FV

现代 Fortran 提供了确保不应用默认规则的表达式implicit none,但是在使用旧代码时,有时无法避免熟悉旧的黑暗方式。

于 2012-11-22T15:52:47.287 回答
4

FORTRAN77中,默认情况下以 I、J、K、L、M 或 N 开头的变量为INTEGER,否则为REALFORTRAN90和 的一些变体FORTRAN77提供了一种机制来通过使用来禁用它IMPLICIT NONE

于 2012-11-22T15:53:06.997 回答