fpp プリプロセッサーの使用

ソースプログラムを前処理する場合は、fpp プリプロセッサー (インテル® Fortran コンパイラーとともに提供されているプリプロセッサー) を使用するか、Fortran コンパイラーの前処理宣言子を使用します。fpp を使用することをお勧めします。

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

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

「コンパイラー・オプション」リファレンスには、fpp の構文に関する情報が含まれています。また、fpp が有効な場合に使用することができる fpp オプションのリストもあります。

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

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

ifort source.fpp

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

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

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

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

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

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

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

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

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

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

#pragma、#ident

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

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

# の後の空の行

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

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

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

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

Caution icon警告

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

fpp ソースファイル

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

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

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

fpp 出力

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

#line_number file_name

これらの情報は、出力行のオリジナルのソース行番号とファイル名を示すために挿入されます。これらの情報を生成しないようにするには、fpp -P オプション (Linux および Mac OS X) または /P オプション (Windows) を使用します。

診断

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

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