这是我的代码中的函数的MWE,它在编译时产生两个错误:
function foo (a)
implicit none
real, intent(in)::a
real::foo
if -1.0 < 0.0 then
write(*,*) "hi"
end if
foo = a
end function foo
我在编译时遇到的错误是:
frag.f90:7063.8:
if -1.0 < 0.0 then
1
Error: Unclassifiable statement at (1)
frag.f90:7065.11:
end if
1
Error: Expecting END FUNCTION statement at (1)
我不明白为什么我会在if
声明中获得无法分类的声明。我认为第二个错误与第一个错误相关(如果没有if
语句,则不需要关闭它),所以如果第一个错误得到修复,第二个错误也应该得到修复。
我正在使用gfortran
进行编译。
答案 0 :(得分:3)
您需要将逻辑表达式放在括号中:
if (-1.0 < 0.0) then
第二个错误确实是垃圾,一旦修复了语句就应该消失了。
来自Fortran 2008 Standard,Cl。 8.1.7.4“IF声明”:
1 IF语句基于单个逻辑表达式控制单个操作语句的执行。
R837 if-stmt is IF ( scalar-logical-expr ) action-stmt