我正在使用最新版本的MinGW来编译我正在处理的模块的缩小部分。这是从我自己制作的模块,所以我需要调整它。它是一个.FOR文件,所以我假设它是固定格式。
源代码如下所示:
module ModGlobalConstants
implicit none
! General constants
integer, parameter :: MAX_EXTENSION_LENGTH = 20
integer, parameter :: MAX_FILENAME_LENGTH = 1000
integer, parameter :: INITIAL_STEP = 1
integer, parameter :: MAXIMUM_STEP = 100000
integer, parameter :: STRESS_VECTOR_SIZE = 6
integer, parameter :: DOF_VECTOR_SIZE = 3
integer, parameter :: N_DIM = 3
integer, parameter :: N_ELEMENT_NODES = 4
integer, parameter :: ID_UNDEFINED = -1
integer, parameter :: dp = selected_real_kind(15, 307)
real(dp), parameter :: ZERO = 0.0
double precision, dimension(3), parameter ::
+ DEFAULT_GRAVITY_DIRECTION = (/ 0.0, -1.0, 0.0 /)
double precision, parameter :: DEFAULT_GRAVITY_ACCELERATION = 9.81
contains
subroutine TrySomeVariables
print *, MAX_EXTENSION_LENGTH
print *, DEFAULT_GRAVITY_ACCELERATION
end subroutine TrySomeVariables
end module ModGlobalConstants
当我在MinGW cmd提示符下编译它时,这就是我得到的:
D:\TEMP\TRUNK-MINGW\ALL>gfortran TEMP.FOR
TEMP.FOR:18:72:
double precision, dimension(3), parameter ::
1
Error: Invalid character in name at (1)
TEMP.FOR:19:7:
+ DEFAULT_GRAVITY_DIRECTION = (/ 0.0, -1.0, 0.0 /)
1
Error: Unclassifiable statement at (1)
根据this链接行,固定格式格式的延续是通过在代码的第6列中包含通用符号(+
在上面的代码示例中)来完成的。我相信这正是我所做的。为什么编译器会在DEFAULT_GRAVITY_ACCELERATION
的定义行上抛出错误?
修改
根据@VladimirF的回答,我删除了所有标签。但是,我不同意+
应该在第5列,而是在第6列(见上面的链接)。
我还缩短了代码以更好地识别错误来源:
module ModGlobalConstants
implicit none
! General constants
double precision, dimension(3), parameter ::
+DEFAULT_GRAVITY_DIRECTION = (/ 0.0, -1.0, 0.0 /)
double precision, parameter ::
+DEFAULT_GRAVITY_ACCELERATION = 9.81
contains
subroutine TrySomeVariables
print *, MAX_EXTENSION_LENGTH
print *, DEFAULT_GRAVITY_ACCELERATION
end subroutine TrySomeVariables
end module ModGlobalConstants
然而,当我尝试生成目标文件时,我遇到了类似的问题:
D:\TEMP\TRUNK-MINGW\temp>gfortran -c TEMP.FOR -o TEMP.o
TEMP.FOR:8:72:
double precision, dimension(3), parameter ::
1
Error: Invalid character in name at (1)
TEMP.FOR:9:7:
+DEFAULT_GRAVITY_DIRECTION = (/ 0.0, -1.0, 0.0 /)
1
Error: Unclassifiable statement at (1)
TEMP.FOR:10:72:
double precision, parameter ::
1
Error: Invalid character in name at (1)
TEMP.FOR:11:7:
+DEFAULT_GRAVITY_ACCELERATION = 9.81
1
Error: Unclassifiable statement at (1)
TEMP.FOR:16:49:
print *, DEFAULT_GRAVITY_ACCELERATION
1
Error: Symbol 'default_gravity_acceleration' at (1) has no IMPLICIT type
TEMP.FOR:15:41:
print *, MAX_EXTENSION_LENGTH
1
Error: Symbol 'max_extension_length' at (1) has no IMPLICIT type
答案 0 :(得分:1)
您的文件中有一些TAB字符。标准Fortran不允许使用它们,并且非常以固定形式混淆。删除它们。使用-Wall
查找它们。
你的专栏DEFAULT_GRAVITY_ACCELERATION = 9.81
太长了。
检查+是否完全在第6列,前面的字符只是空格,没有TAB。删除所有其他TAB。