プリプロセッサー・シンボル (マクロ) を使用すると、コンパイルする前にプログラムの値を置換することができます。この処理は、前処理フェーズで行います。
一部のプリプロセッサー・シンボルはコンパイラー・システムによって事前定義されており、コンパイラー宣言子および fpp で使用できます。他のシンボルを使用する場合は、コマンド行で指定します。
前処理中に使用されるシンボル名を定義するには、-D オプション (Linux* および Mac OS* X) または /D オプション (Windows*) を使用します。このオプションの機能は、#define というプリプロセッサー宣言子と同じです。
詳細は、次のトピックを参照してください。
D コンパイラー・オプション
fpp を使用して前処理を行うと、定義したシンボルの名前が検出されるたびに、指定されている値に置換されます。前処理コンパイラー宣言子では、IF と IF DEFINED のみ許可されています。
前処理時のシンボルの置換 (マクロの展開とも呼ぶ) を無効にするには、-fpp:"-macro=no" (Linux および Mac OS X) または /fpp:"/macro=no" (Windows) を指定します。
前処理時のシンボルの置換を無効にすることで、fpp を使用して、置換せずに、条件付きコンパイル (#ifdef の使用など) を実行することができます。
プリプロセッサー・シンボルの自動定義を抑止するには、-U オプション (Linux および Mac OS X) または /U オプション (Windows) を使用します。このオプションは、指定された名前について、現在有効になっているシンボル定義を抑止するために使用します。このオプションの機能は、#undef というプリプロセッサー宣言子と同じです。
詳細は、次のトピックを参照してください。
U コンパイラー・オプション
Windows:
次の説明は Windows システムが対象になります。
プリプロセッサー・シンボルの指定は、コマンドライン、または Visual Studio* 統合開発環境 (IDE) から指定できます。IDE では、[Project (プロジェクト)] > [Properties (プロパティ)] > [Fortran] を選択し、[General (全般)] カテゴリーの [Preprocessor Definitions (プリプロセッサーの定義)] オプションを使用するか、[Preprocessor (プリプロセッサー)] カテゴリーのオプションを使用します。
次に、利用可能なプリプロセッサー・シンボルを示します。
事前定義のシンボル名および値 |
シンボルが定義される条件 |
---|---|
__INTEL_COMPILER=1110 |
インテル® Fortran コンパイラーを識別する場合 |
__INTEL_COMPILER_BUILD_DATE=YYYYMMDD |
インテル® Fortran コンパイラーのビルドの日付を識別する場合 |
_DLL=1 |
/libs:dll、/MDs、/MD、/dll、または /LD が指定された場合のみ。/libs:static が指定された場合は定義されません。 |
_MT=1 |
/threads または /MT が指定された場合のみ |
_M_IX86=n00 |
IA-32 アーキテクチャー・ベースのシステムのみ。n には /G で指定された数値が割り当てられます (例えば、/G7 の場合は _M_IX86=700)。 |
_M_IA64=64n00 |
IA-64 アーキテクチャー・ベースのシステムのみ。n には /G で指定された数値が割り当てられます (例えば、/G1 の場合は _M_IA64=64200)。 |
_M_X64 |
インテル® 64 アーキテクチャー・ベースのシステムのみ。インテル® 64 対応アプリケーションの条件付けに使用する場合。 |
_M_AMD64 |
インテル® 64 アーキテクチャー・ベースのシステムのみ。このシンボルは、デフォルトで設定されています。 |
_OPENMP=200805 |
OpenMP* 処理が要求された (つまり、/Qopenmp が指定された) 場合。この値は YYYYMM 形式で、YYYY と MM はそれぞれ OpenMP Fortran 仕様でサポートされた年と月を表します。このプリプロセッサー・シンボルは、fpp と Fortran コンパイラーの条件付きコンパイルの両方で使用することができます。 |
_PGO_INSTRUMENT |
/Qprof_gen が指定された場合 |
_WIN32 |
常に定義されます |
_WIN64 |
インテル® 64 および IA-64 アーキテクチャー・ベースのシステムのみ。 |
_VF_VER=1110 |
Compaq* Visual Fortran 互換のコンパイルコマンド (df または f90) が使用された場合 |
非ネイティブな IA-64 対応アプリケーション用コンパイラーを使用した場合、使用中のシステムではなく、実行ファイルのターゲット・プラットフォームに対してプラットフォーム固有のシンボルが設定されます。
Linux および Mac OS X:
次の説明は Linux および Mac OS X に適用されます。
シンボル名 |
デフォルト |
アーキテクチャー (IA-32、インテル® 64、IA-64) |
説明 |
---|---|---|---|
__INTEL_COMPILER=n |
オン、n=1110 |
すべて |
インテル® Fortran コンパイラーを識別します。 |
__INTEL_COMPILER_BUILD_DATE =YYYYMMDD |
|
すべて |
インテル® Fortran コンパイラーのビルドの日付を示します。 |
__linux__ (Linux のみ) __linux (Linux のみ) __gnu_linux__ (Linux のみ) linux (Linux のみ) __unix__ (Linux のみ) __unix (Linux のみ) unix (Linux のみ) __ELF__ (Linux のみ) |
|
すべて |
コンパイル開始時に定義されます。 |
__APPLE__ (Mac OS X のみ) __MACH__ (Mac OS X のみ) |
|
IA-32 アーキテクチャー |
コンパイル開始時に定義されます。 |
__i386__ __i386 i386 |
|
IA-32 アーキテクチャー |
プログラムをコンパイルするターゲット・ハードウェアのアーキテクチャーを識別します。 |
__ia64__ (Linux のみ) __ia64 (Linux のみ) |
|
IA-64 |
プログラムをコンパイルするターゲット・ハードウェアのアーキテクチャーを識別します。 |
__x86_64 __x86_64__ |
|
インテル® 64 アーキテクチャー |
プログラムをコンパイルするターゲット・ハードウェアのアーキテクチャーを識別します。 |
_OPENMP=n |
n=200805 |
すべて |
YYYYMM 形式で、YYYY と MM はそれぞれ OpenMP Fortran の仕様に対応した年と月を表します。fpp と Fortran コンパイラーの条件付きコンパイルの両方で、このプリプロセッサー・シンボルを使用できます。-openmp が指定されたときのみ使用できます。 |
_PGO_INSTRUMENT |
オフ |
すべて |
-prof-gen が指定された場合 |
__PIC__ __pic__ |
オフ (Linux)、 オン (Mac OS X) |
すべて |
位置に依存しないコードとしてコンパイルする場合に設定します。Mac OS X では、これらのシンボルは常に設定されます。 |