下面的代碼編譯,但我不認爲它應該。正如你所看到的,輸出是垃圾。這個FORTRAN代碼不應該被編譯。它有這個原因嗎?
這是一個最小的失敗的例子,在我工作的一個大型項目中讓我困難。
我的問題是 - 爲什麼編譯器不抱怨?這是一個編譯器的限制,還是這種「預期的行爲」,我錯過了什麼?
我正在使用gfortran 4.6.3。
module dataModule
integer :: datum1 = int(1)
integer :: datum2 = int(2)
end module dataModule
program moduleTest
use dataModule, only: datum1
write(*,*) "datum 1 is", datum1
write(*,*) "datum 2 is", datum2
end program moduleTest
輸出示例:
datum 1 is 1
datum 2 is 4.58322689E-41
你已經錯過了'隱式無'。沒有它的代碼是非常有效的,輸出是允許的。 – francescalus 2014-12-05 17:45:50
書中最古老的招數:) – Rob 2014-12-05 17:46:11
當然啊!多謝你們。它實際上比這更糟,我在(非常老!)代碼中編輯的模塊有 IMPLICIT REAL * 8(a-h,o-z) – carthurs 2014-12-05 17:49:24