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