Gfortran不会让我编译下面的代码,因为nLines和nIOstts不能像这样初始化;所以我必须首先声明它们,然后在代码中添加两行以设置其所需的初始值。FORTRAN:为什么不能初始化INTENT(OUT)或RESULT变量?
这是什么工作?也许对于INTENT(OUT)来说,它更有意义,因为函数将存储数据的变量已经存在(现在我不记得fortran子例程是否通过引用工作),但对于RESULT变量似乎没有必要。这是编译器的特定情况,还是Fortran的一般特性?
FUNCTION LinesInFile(NUnit的,nIOstts)RESULT(nLines)
IMPLICIT NONE
INTEGER,INTENT(IN):: NUnit的
INTEGER,INTENT(OUT):: nIOstts = 0
INTEGER :: nLines = -1DO WHILE(nIOstts.EQ.0)
READ(UNIT=nUnit,FMT='(A)',nIOstts) nLines=nLines+1
ENDDO
RETURN; END FUNCTION
http://www.cs.rpi.edu/~szymansk/OOF90/bugs.html – Wildcat