Compilation 应为括号错误gfortran
我正在尝试使用gfortran v.4.8.2编译一些fortran代码。 编译时,会出现以下错误:Compilation 应为括号错误gfortran,compilation,fortran,gfortran,parentheses,Compilation,Fortran,Gfortran,Parentheses,我正在尝试使用gfortran v.4.8.2编译一些fortran代码。 编译时,会出现以下错误: ant_driver.f90:185.72: if (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns) 1 Error: Syntax error in IF-expression at (1) ant_
ant_driver.f90:185.72:
if (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns)
1
Error: Syntax error in IF-expression at (1)
ant_driver.f90:187.119:
ry%thck(ew,ns) = -rhoo/rhoi * (model%geometry%topg(ew,ns)- model%climate%eus(ew,
1
Error: Expected a right parenthesis in expression at (1)
ant_driver.f90:188.27:
endif
1
Error: Expecting END DO statement at (1)
ant_driver.f90:248.82:
odel%geometry%usrf(ew,ns) = - (model%geometry%topg(ew,ns)-model%climate%eus(ew,
1
Error: Expected a right parenthesis in expression at (1)
ant_driver.f90:260.107:
model%geometry%usrf(ew,ns) - (model%geometry%topg(ew,ns)-model%climate%eus(ew,
1
Error: Expected a right parenthesis in expression at (1)
ant_driver.f90:174.30:
call glide_set_eus(model,eus)
1
Error: Rank mismatch in argument 'inarray' at (1) (scalar and rank-2)
错误与以下代码行有关:
185-188:
260:
174:
非常感谢您的帮助。谢谢您的时间。您的错误是由于行截断造成的。对于固定格式Fortran,指定的行长为72个字符,而对于自由格式Fortran,则应为132个字符。由于扩展名
.f90
的缘故,源代码应该被解释为自由格式,但您可以使用-ffree form
在gfortran中强制自由格式。您还可以分别使用选项-ffix-line-length-n
和-ffree-line-length-n
更改固定格式和自由格式源中的最大行长,其中n
是0
或none
的字符数和值表示无限行长度。您的错误是由于行截断造成的。对于固定格式Fortran,指定的行长为72个字符,而对于自由格式Fortran,则应为132个字符。由于扩展名.f90
的缘故,源代码应该被解释为自由格式,但您可以使用-ffree form
在gfortran中强制自由格式。您还可以分别使用选项-ffix-line-length-n
和-ffree-line-length-n
更改固定格式和自由格式源中的最大行长,其中n
是0
或none
的字符数和值意味着无限行长度。看到错误消息:ant_driver.f90:185.72看起来您的自由格式代码被视为固定格式代码,在位置72后被截断,因此丢失了行的其余部分。请参阅编译器的文档,了解如何启用“自由格式”选项。请参阅错误消息:ant_driver.f90:185.72您的自由格式代码似乎被视为固定格式代码,并在位置72后被截断,因此缺少该行的其余部分。请参阅编译器的文档,了解如何启用自由格式选项。谢谢,但即使启用了-ffree-form选项或-free-line-length选项,我也会遇到同样的错误。我链接的任何库或目录中的代码是否也必须具有自由格式?谢谢你提前给我时间。谢谢你这么做,但是即使启用了-ffree-form选项或-free-line-length,我也会遇到同样的错误。我链接的任何库或目录中的代码也必须要有-free-form吗?提前感谢您的光临。
if (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns) < 0 .and. model%geometry%thck(ew,ns) == 0 .and. &
mask(ew,ns) == 1) then
model%geometry%thck(ew,ns) = -rhoo/rhoi * (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns))
endif
model%geometry%usrf(ew,ns) = - (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns)) * rhoo/rhoi &
+ (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns))
model%geometry%thck(ew,ns) = model%geometry%usrf(ew,ns) - (model%geometry%topg(ew,ns)-model%climate%eus(ew,ns))
call glide_set_eus(model,eus)