インテル® Fortran コンパイラー 14.0 ユーザー・リファレンス・ガイド
Fortran コンパイラー・プリプロセッサー (fpp) は、インテル® Fortran 製品の一部として提供されます。インテル® Fortran ソースファイル用のプリプロセッサーを使用する場合、生成される出力ファイルはコンパイラーによって入力ソースファイルとして使用されます。
前処理は、プリプロセッサー・シンボル (マクロ) 置換、条件付きコンパイル、ファイルのインクルードといった処理を行います。インテル® Fortran の事前定義済みシンボルについては、「定義済みプリプロセッサー・シンボルの使用」で説明されています。
fpp は、ANSI C プリプロセッサーのいくつかの機能を備え、似たような宣言子のセットをサポートしています。宣言子は、Fortran ソースファイルの 1 列目から開始する必要があります。プリプロセッサー宣言子は、Fortran 言語の一部ではありません。また、Fortran 文の規則も適用されません。宣言子の構文は、C プリプロセッサー宣言子を基にしています。
コンパイラーには、fpp を使用しない、宣言子に基づく限定的な条件付きコンパイル機能が含まれています。IF 宣言子構造は、限定的な条件付きコンパイル機能を提供します。
デフォルトでは、コンパイル前に、プリプロセッサーは実行されません。ただし、ソースファイルのファイルの拡張子が.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 を明示的に実行できます。
ifort コマンドラインで、ifort コマンドと fpp コンパイラー・オプションを使用します。 デフォルトでは、指定したファイルがコンパイルおよびリンクされます。中間ファイル (.i または .i90) を残すには、[Q]save-temps コンパイラー・オプションを指定します。
コマンドラインで FPP コマンドを使用します。この場合、コンパイラーは起動されません。FPP コマンドラインを使用する場合、入力ファイルと中間出力ファイル (.i または .i90) を指定する必要があります。詳細は、コマンドラインから fpp -help (Linux* および OS X*) または fpp /help (Windows*) と入力してヘルプを表示してください。
Microsoft* Visual Studio* IDE では、プロパティー・ページの [Fortran] > [Preprocessor (プリプロセッサー)] カテゴリーで [Preprocess Source File (プリプロセス・ソース・ファイル)] オプションを [Yes (はい)] に設定します。 中間ファイルを残すには、[Fortran] > [Command Line (コマンドライン)] カテゴリーの [Additional Options (追加のオプション)] に /Qsave_temps を追加します。
次の表は、一般的な 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 行にマージします。