5

私は、もともと Intel のコンパイラを対象とした大規模な Fortran コードベースを持っています。現在、gfortran でコンパイルする準備をしています。残念ながら、コードには次のような Intel スタイルの前処理ディレクティブが散らばっています。

!DEC$ IF DEFINED (MYDIRECTIVE)
   REAL, DIMENSION(:,:,:), ALLOCATABLE :: my_real_var
!DEC$ ENDIF

グーグルとgfortranのドキュメントからわかることから、次のようなCスタイルの前処理以外には、gfortranの内部サポートはありません。

#if defined MYDIRECTIVE
   REAL, DIMENSION(:,:,:), ALLOCATABLE :: my_real_var
#endif

他の誰かがこの問題に遭遇し、エレガントな解決策を思いつきましたか? もちろん、コンパイルのためにコードを gfortran に渡す前に、外部のプリプロセッサを呼び出すシェル スクリプトを作成することもできますが、これは私にとって素晴らしい解決策とは思えません。

何かご意見は?ありがとうSO教祖!

4

1 に答える 1

2

Intel ifort は C スタイルのプリプロセッサ ディレクティブを理解するので、ファイルをそのスタイルに変換するのが最も簡単な場合があります。そうすれば、両方のコンパイラで動作する単一のコード ベースが得られます。変換されたコードを ifort で回帰テストする作業がいくつかあります。

于 2010-03-01T22:33:08.190 に答える