ソースプログラムを前処理する場合は、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 を明示的に実行できます。
ifort コマンドラインで、ifort コマンドと -fpp オプション (Linux および Mac OS X) または /fpp オプション (Windows) を使用します。デフォルトでは、指定したファイルがコンパイルおよびリンクされます。中間ファイル (.i または .i90) を残すには、-save-temps オプション (Linux および Mac OS X) または /Qsave_temps オプション (Windows) を指定します。
コマンドラインで FPP コマンドを使用します。この場合、コンパイラーは起動されません。FPP コマンドラインを使用する場合、入力ファイルと中間出力ファイル (.i または .i90) を指定する必要があります。詳細は、コマンドラインから fpp -help (Linux および Mac OS X) または fpp /help (Windows) と入力してヘルプを表示してください。
Microsoft* Visual Studio* IDE では、プロパティー・ページの [Fortran] > [Preprocessor (プリプロセッサー)] カテゴリーで [Preprocess Source File (プリプロセス・ソース・ファイル)] オプションを [Yes (はい)] に設定します。中間ファイルを残すには、[Fortran] > [Command Line (コマンドライン)] カテゴリーの [Additional Options (追加のオプション)] に /Qsave_temps を追加します。
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 ソースプログラムの前処理を指定する必要はありません。
Fortran をサポートしていないプリプロセッサーを使用すると、特に FORMAT (\\I4) 文で、Fortran コードが壊れる可能性があります。ほとんどの C/C++ プリプロセッサーでは、ダブル・バックスラッシュ (\\) がレコードの終わりを示すため、cpp で前処理するとプログラムの意味が変わることになります。
ソースファイルには、次の形式の fpp トークンを含めることができます。
fpp 宣言子名。宣言子に関する詳細は、「FPP 宣言子の使用」を参照してください。
Fortran キーワードを含むシンボリック名。fpp では、名前に Fortran と同じ文字を使用することができます。シンボリック名に関する詳細は、「定義済みプリプロセッサー・シンボルの使用」を参照してください。
定数。整数、実数、倍精度および 4 倍精度の実数、バイナリー、8 進数、16 進数 (代替表記を含む)、文字、ホレリス定数を使用できます。
特殊文字、スペース、タブ文字、改行文字
コメント。次のものを含みます。
Fortran 言語のコメント。先頭が C、c、*、d、または D の固定形式のソース行は、コメント行と見なされます。! 記号から行末まではコメントと見なされます。ただし、#if 宣言子または #elif 宣言子の定数式で "!" が使用されている場合は除きます。コメント内のマクロは展開されませんが、-f-com=no によって有効にすることができます。
/ および */ で囲まれた fpp のコメント。fpp コメントは出力から除外され、コメント内のマクロは展開されません。各 /* には、対応する */ が必要です。fpp コメントは、広範囲なソースをコンパイル対象外とする場合に便利です。Fortran のコメント記号を使用して、各行をコメントにする必要がありません。
C++ のようにダブルスラッシュ (//) で始まる行コメント。
トークン文字列は、Fortran の継続文字 & を使用している場合のみ、複数行に渡ることができます。fpp は、そのような行を 1 行にマージしません。
識別子は、fpp によって、常に 1 行に配置されます。例えば、入力識別子が複数行に渡る場合、fpp はそれを 1 行にマージします。