我正在使用gfortran尝试在Windows 8.1中编译Fortran 95自由格式代码。
λ gfortran --version
GNU Fortran (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
可以清楚地看到使用MinGW安装程序安装的内容。
我在linux中使用gfortran没有任何障碍。但由于项目要求,我需要使用Windows进行开发和测试。使用fortran的目的是开发性能密集的科学模拟部分。
我所面临的错误是我在linux中没有注意到的。
我将描述最小有效代码和错误代码。
有效代码
我有一个名为 test.f95 的文件,其中包含以下代码。
program test
IMPLICIT NONE
! First set of variables declaration
REAL:: A,B,C
A = 1.0
B = 2.0
C = 3.0
WRITE(*,*) A * B
WRITE(*,*) C
! Second set of variables declaration
!REAL:: D
!D = 4.0
!WRITE(*,*) D
end program test
可以看出,上面的代码中有一些注释掉了。 我稍后会谈到它。
现在,当我使用gfortran编译它时,它成功编译。
λ gfortran test.f95
λ ls
a.exe* test.f95
我运行可执行文件并产生预期结果。
λ a.exe
2.00000000
3.00000000
ERRORNEOUS CODE
相同的文件test.f95包含我之前提到的注释未被注释生成
program test
IMPLICIT NONE
! First set of variables declaration
REAL:: A,B,C
A = 1.0
B = 2.0
C = 3.0
WRITE(*,*) A * B
WRITE(*,*) C
! Second set of variables declaration
REAL:: D
D = 4.0
WRITE(*,*) D
end program test
我们所做的是取消注释用于声明,设置和打印实变量D的3行代码。这是我们在此程序中描述的第2组变量。
然而,当我们尝试编译时,我们正在编译失败。
λ gfortran test.f95
test.f95:16:8:
REAL:: D
1
Error: Unexpected data declaration statement at (1)
test.f95:17:1:
D = 4.0
1
Error: Symbol 'd' at (1) has no IMPLICIT type
所以,可以看出我们有一个错误。
我之前没有在linux中遇到过这样的错误,因为我甚至无法定义第二个变量。
也就是说,每当我声明第二组变量时就会出现问题。
问题
所以,问题是,
i)我在代码中犯了什么错误吗?
ii)为什么会出现此错误?
ii)如何解决此错误?