2016-11-25 3 views
1

Mingwを使用してgfortranコードをコンパイルしています。私はコードの次の行で式を続ける方法を見つけるのに苦労します。標準のFortranコードの指示に従って継続文字&を使用しようとしましたが、動作しません。gfortranとの継続ができません

私のコードは以下の通りです:

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

私にとっては完璧に機能しました。ここでは、ファイル名、コンテンツ、実行コマンドとの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) 

UPDATE:

ソリューションは.F90にファイル拡張子を変更することでした。これが機能する理由

reaonは、以下の通りです: .F90ファイルはFORTRAN 90/95/2003/...標準(後方互換性)と解釈されます。 ファイル名が.fの場合は、Fortran77標準に従って解釈されます(Standard Fixed Format)。この構文基準では、各行の最初の5文字が空白である必要があることがわかります。第6は行継続に使用されます。 FORTRAN77構文で

次codeexample作品:位置番号6で&に

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

注意test.f!あなたのコンパイラは、標準の固定フォーマットに固執していないという事実を無視しているようです。あなたのコードを77でコンパイルしようとすると、その問題を正確に参照する1つのerrormessagesが得られます。これは時々発生します(コンパイラによっては大文字と小文字が区別され、他のコンパイラでは区別されないものもあります)。

コンパイルの依存関係を回避するには、常に言語標準に従ってください。

ところで - ここで素敵なFortran77 Tutorial

+0

解決策は何ですか?私の答え –

+0

の2つの解決策のアップデートを参照してください。1)使用。フリーフォームの場合はf90)2)コンパイラスイッチの引数として-fixedを使用します。 (もしあなたがそうしたいなら、.f90には.freeを、.f90には.fixedを使うことができます。 – Holmz

+1

こんにちは、Markus、そうです、問題は接尾辞 ".f90"と私が尊敬しなかったという事実でしたあなたの時間と詳細な答えをありがとう、私はそれを感謝します。あなたは時間のトンを救った。 –

関連する問題