定義済みプリプロセッサー・シンボルの使用

プリプロセッサー・シンボル (マクロ) を使用すると、コンパイルする前にプログラムの値を置換することができます。この処理は、前処理フェーズで行います。

一部のプリプロセッサー・シンボルはコンパイラー・システムによって事前定義されており、コンパイラー宣言子および fpp で使用できます。他のシンボルを使用する場合は、コマンド行で指定します。

前処理中に使用されるシンボル名を定義するには、-D オプション (Linux* および Mac OS* X) または /D オプション (Windows*) を使用します。このオプションの機能は、#define というプリプロセッサー宣言子と同じです。

詳細は、次のトピックを参照してください。

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 というプリプロセッサー宣言子と同じです。

詳細は、次のトピックを参照してください。

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 形式で、YYYYMM はそれぞれ 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 形式で、YYYYMM はそれぞれ OpenMP Fortran の仕様に対応した年と月を表します。fpp と Fortran コンパイラーの条件付きコンパイルの両方で、このプリプロセッサー・シンボルを使用できます。-openmp が指定されたときのみ使用できます。

_PGO_INSTRUMENT

オフ

すべて

-prof-gen が指定された場合

__PIC__

__pic__

オフ (Linux)、

オン (Mac OS X)

すべて

位置に依存しないコードとしてコンパイルする場合に設定します。Mac OS X では、これらのシンボルは常に設定されます。