【发布时间】:2014-12-05 17:42:48
【问题描述】:
以下代码可以编译,但我认为它不应该编译。如您所见,输出是垃圾。
这是一个在我从事的大型项目中让我难以忍受的事情的最小失败示例。
我的问题是 - 为什么编译器不抱怨?这是编译器限制,还是某种“预期行为”,我错过了什么?
我使用的是 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
【问题讨论】:
-
你错过了
implicit none。没有它,代码是非常有效的,并且允许输出。 -
书中最古老的把戏:)
-
啊当然!多谢你们。实际上比这更糟糕,我在(非常旧的!)代码中编辑的模块具有 IMPLICIT REAL*8 (a-h,o-z)
标签: compilation fortran fortran90 gfortran