"无法分类的陈述"在if声明

时间:2016-07-12 18:46:36

标签: compiler-errors fortran

这是我的代码中的函数的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进行编译。

1 个答案:

答案 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