与gfortran的续行不起作用

时间:2016-11-25 13:06:22

标签: fortran gfortran

我正在使用Mingw编译我的gfortran代码。我很难找到如何在代码的下一行继续我的公式的方法。我尝试根据标准Fortran代码的说明使用延续字符&,但它不起作用。

我的代码如下:

program test
    implicit none
    real :: a
    a=1.+ &
    2.
    print *,'Gfortran code  ',a 
end program test

当我尝试编译它时,编译器返回以下语句:

test.f:4.13:
          a=1.+ &
                1
Error: Syntax error in expression at (1)
test.f:5.8:
          2.
           1
Error: Invalid character in name at (1)

如何继续排队?

1 个答案:

答案 0 :(得分:2)

对我而言,它完美无缺。这里是文件名,内容,执行命令和gfortran细节:

<强> test.f90:

program test
    implicit none
    real :: a
    a=1.+ &
    2.
    print *,'Gfortran code  ',a 
end program test

编译: gfortran test.f90

运行: ./a.out

输出: Gfortran code 3.00000000

gfortran版本gfortran -v

Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-    languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-5) 

<强>更新

解决方案是将文件后缀更改为.f90

原因,为什么这样做有以下几点: .f90 文件被解释为FORTRAN 90/95/2003 / ...标准(向后兼容)。 如果文件名为 .f ,则会根据Standard Fixed Format中的Fortran77标准对其进行解释。在此语法标准中,您可以看到每行的前5个字符需要为空。第6个用于续行。

以下代码示例适用于Fortran77语法: test.f

      program test
          implicit none
          real :: a
          a=1.+ 
     &    2.
          write(*,*)'Gfortran code  ',a 
      end program test

注意&amp;在6号位置!您的编译器似乎忽略了这样一个事实,即您并没有坚持使用标准固定格式。如果我尝试使用77编译您的代码,我会得到大量的错误消息,这些错误消息完全指向该问题。这种情况时有发生(有些编译器也区分大小写,有些则不区分)。

因此,为了避免编译依赖,请始终坚持语言标准。

顺便说一下 - 这里有一个很好的Fortran77 Tutorial