2017-07-21 21 views
3

少し助けが必要です:this siteによると、継続行の最大数に制限があります。gfortran継続行の最大数

私はこれをテストすることにしました。私はジャンボを書いたFUNCTIONここでは17,146の継続行に分割されたステートメントで表現された巨大な代数式を計算します。

!test.f90 1.6 MB file 
DOUBLE COMPLEX FUNCTION myfunction(a, b) 

    DOUBLE COMPLEX, INTENT(IN) :: a 
    DOUBLE COMPLEX, INTENT(IN) :: b 

    myfunction = gd0/16.d0)*a*b*((a+b)**2)*((32.d0*DCONJG(f(4)))+(12& 
&8.d0*DCONJG(f(11)))+(160.d0*DCONJG(f(24)))+(64.d0*DCONJG(f(46)))+(32.d0*DCONJG(f(3)))+(256.d0*DCON& 
&JG(f(10)))+(480.d0*DCONJG(f(23)))+(256.d0*DCONJG(f(45)))+(32.d0*DCONJG(g(9)))+(128.d0*DCONJG(f(& 
&9)))+(480.d0*DCONJG(f(22)))+(384.d0*DCONJG(f(44)))+(96.d0*DCONJG(g(21)))+(160.d0*DCONJG(f(21)))+(2& 
&56.d0*DCONJG(f(43)))+(64.d0*DCONJG(g(42)))+(64.d0*DCONJG(f(42)))+(64.d0*DCONJG(f(8)))+(192.d0*DCON& 
& (64.d0*DCONJG(g(42)) ! and so on and so forth... 

END FUNCTION 

私はgfortran -c test.f90で、この醜態をコンパイルし、それはエラーや警告なしで、5分後に11.4メガバイトtest.oファイルを返されました。私はそれを実行し、それは正しい結果を返しました。

gfortranは最大継続行規則を遵守していないのはなぜですか?

+0

-std = f95 -pedanticのようなオプションでも診断する必要はありません。 – tim18

+0

@ tim18申し訳ありません。私はあなたが意味することを理解していません。私の質問はこのサイトには不適切だと言っていますか? – QuantumDot

+0

彼は、[-pedanticオプション](https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#Error-and-Warning-Options)でも警告が表示されないメッセージ。私は個人的には分かりません。 –

答えて

5

gfortranが最大継続行規則を観察していないのはなぜですか?

このルールは制約ではなく、コンパイラーは標準によって拡張として大きな制限を与えることが許可されています。標準では、継続行の最大数に最小値が設定されます。コンパイラは標準の最小値の超過を報告することがありますが、必須ではなく、フラグが必要な場合があります。

+0

私が他人と共有したいコードを書くつもりであるので、私のソースコードが他のコンパイラと最大限に互換性があることを教えてくれるテストプログラムはありますか?ありがとう! – QuantumDot

+0

私には分かりません。 –