インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

fpp 前処理

インテル® Fortran コンパイラーのプリプロセッサー (fpp) は、インテル® Fortran 製品の一部として提供されます。インテル® Fortran ソースファイル用のプリプロセッサーを使用する場合、生成される出力ファイルはコンパイラーによって入力ソースファイルとして使用されます。

前処理は、プリプロセッサー・シンボル (マクロ) 置換、条件付きコンパイル、ファイルのインクルードといった処理を行います。インテル® Fortran の事前定義済みシンボルについては、「定義済みプリプロセッサー・シンボルの使用」で説明されています。

fpp は、ANSI C プリプロセッサーのいくつかの機能を備え、似たようなプリプロセッサー・ディレクティブのセットをサポートしています。プリプロセッサー・ディレクティブは、Fortran ソースファイルの 1 列目から開始する必要があります。プリプロセッサー・ディレクティブは、Fortran 言語の一部ではありません。また、Fortran 文の規則も適用されません。プリプロセッサー・ディレクティブの構文は、C プリプロセッサー・ディレクティブを基にしています。

コンパイラーには、fpp を使用しない、ディレクティブに基づく限定的な条件付きコンパイル機能が含まれています。IF ディレクティブ構造は、限定的な条件付きコンパイル機能を提供します。

インテル® Fortran プリプロセッサー (fpp) の代わりに、別の Fortran プリプロセッサーを指定することもできます。詳細は、fpp-name オプションを参照してください。

コンパイラーによる自動前処理

デフォルトでは、コンパイル前に、プリプロセッサーは実行されません。ただし、ソースファイルのファイルの拡張子が.fpp、.F、.F90、.FOR、.FTN、または .FPP の場合、インテル® Fortran コンパイラーは自動的に fpp を呼び出します。例えば、次のコマンドは、fpp プリプロセッサー・ディレクティブを含むソースファイルを前処理して、その前処理済みファイルをコンパイラーとリンカーに渡します。

ifort source.fpp

その他の Fortran 拡張子のファイルを前処理する場合は、fpp コンパイラー・オプションを使用して、プリプロセッサーを明示的に指定する必要があります。

fpp プリプロセッサーは、自由形式と固定形式の両方の Fortran ソースファイルを処理することができます。デフォルトでは、ファイル拡張子が .F、.f、.for、または .fpp のファイル名は、固定形式であると見なされます。ファイル拡張子が .F90 または .f90 (あるいは、ここで記載されていないその他の拡張子) のファイル名は、自由形式であると見なされます。自由形式を指定するには free コンパイラー・オプションを、明示的に固定形式を指定するには fixed コンパイラー・オプションを指定します。

fpp プリプロセッサーは、固定形式のソース行でタブ形式を認識します。

ファイルを前処理するための fpp の実行

次の方法で、FPP を明示的に実行できます。

次の表は、一般的な cpp 機能に対する fpp のサポートを示します。

サポートされている cpp 機能

サポートされていない cpp 機能

#define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、#include、#error、#warning、#line

#pragma、#ident

#(文字列サイズ) 演算子および ##(連結) 演算子

最初の # 文字よりも前にある空白またはタブ文字

# の後の空の行

否定演算子としての ! の使用

バックスラッシュ (\) と改行の組み合わせ

cpp と違い、fpp では、可能な場合に継続行を 1 行にマージしません。

通常、上記のような fpp 前処理コマンド使用している場合を除いて、Fortran ソースプログラムの前処理を指定する必要はありません。

注意

Fortran をサポートしていないプリプロセッサーを使用すると、特に "FORMAT (\\I4)" 文で、Fortran コードが壊れる可能性があります。ほとんどの C/C++ プリプロセッサーでは、ダブル・バックスラッシュ (\\) がレコードの終わりを示すため、cpp で前処理するとプログラムの意味が変わることになります。

fpp ソースファイル

ソースファイルには、次の形式の fpp トークンを含めることができます。

トークン文字列は、Fortran の継続文字 & を使用している場合のみ、複数行に渡ることができます。fpp は、そのような行を 1 行にマージしません。

識別子は、fpp によって、常に 1 行に配置されます。例えば、入力識別子が複数行に渡る場合、fpp はそれを 1 行にマージします。

fpp 出力

出力には、編集された入力のコピーと次の形式の情報が含まれます。

#line_number file_name

これらの情報は、出力行のオリジナルのソース行番号とファイル名を示すために挿入されます。これらの情報を生成しないようにするには、P プリプロセッサー・オプションを使用します。

診断

fpp 診断メッセージは 3 つあります。

fpp によって生成されるメッセージには、問題の説明が含まれています。stderr に、エラーが発生した行番号、ファイル名、およびその診断が表示されます。

関連情報