インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
プリプロセッサー・シンボル (マクロ) を使用すると、コンパイルする前にプログラムの値を置換することができます。この処理は、前処理フェーズで行います。
次の表に示すプリプロセッサー・シンボルは、コンパイラー・システムによって事前定義されており、コンパイラー・ディレクティブおよび fpp で使用できます。ほかのシンボル名を使用する場合は、コマンド行で指定します。
前処理中に使用されるシンボル名を定義するには、D コンパイラー・オプションを使用します。このオプションの機能は、#define プリプロセッサー・ディレクティブと同じです。
fpp を使用して前処理を行うと、定義したシンボルの名前が検出されるたびに、指定されている値に置換されます。前処理コンパイラー・ディレクティブでは、IF と IF DEFINED のみ許可されています。
前処理時のシンボルの置換 (マクロの展開とも呼ぶ) を無効にするには、fpp の macro=no プリプロセッサー・オプションを指定します。
前処理時のシンボルの置換を無効にすると、条件付きコンパイル (#ifdef の使用など) の置換を行わずに fpp を実行することができます。
プリプロセッサー・シンボルの自動定義を抑止するには、U プリプロセッサー・オプションを使用します。このオプションは、指定された名前に対し、現在有効になっているシンボル定義を抑止するために使用します。このオプションの機能は、#undef プリプロセッサー・ディレクティブと同じです。
次の表のプリプロセッサー・シンボルは、fpp と Fortran コンパイラーの条件付きコンパイルの両方で使用することができます。
シンボル | 説明 |
---|---|
__APPLE__ (macOS*) |
'1'。 |
__AVX512BW__ (Windows*、Linux*、macOS*) |
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) バイト命令およびワード命令をサポートしているプロセッサーの場合は '1'。 [Q]xCORE-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。 |
__AVX512CD__ (Windows*、Linux*、macOS*) |
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 競合検出命令をサポートしているプロセッサーの場合は '1'。 [Q]xCORE-AVX512、[Q]xCOMMON-AVX512、[Q]xMIC-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。 |
__AVX512DQ__ (Windows*、Linux*、macOS*) |
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) ダブルワード命令およびクワッドワード命令をサポートしているプロセッサーの場合は '1'。 [Q]xCORE-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。 |
__AVX512ER__ (Windows*、Linux*、macOS*) |
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 指数および逆数命令をサポートしているプロセッサーの場合は '1'。 [Q]xMIC-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。 |
__AVX512F__ (Windows*、Linux*、macOS*) |
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 基本命令をサポートしているプロセッサーの場合は '1'。 [Q]xCORE-AVX512、[Q]xCOMMON-AVX512、[Q]xMIC-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。 |
__AVX512PF__ (Windows*、Linux*、macOS*) |
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) プリフェッチ命令をサポートしているプロセッサーの場合は '1'。 [Q]xMIC-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。 |
__AVX512VL__ (Windows*、Linux*、macOS*) |
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) ベクトル長拡張命令をサポートしているプロセッサーの場合は '1'。 [Q]xCORE-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。 |
_DEBUG (Windows*) |
/dbglibs、/MT[d]、/MD[d] オプションを指定した場合は '1'。 |
_DLL (Windows*) |
次のいずれかのオプションが明示的または暗黙的に指定された場合は '1'。
|
__ELF__ (Linux*) |
コンパイル開始時に '1' に定義されます。 |
__gnu_linux__ (Linux*) |
コンパイル開始時に '1' に定義されます。 |
__i386__ __i386 i386 (Linux*) |
IA-32 アーキテクチャーを対象にコンパイルする場合は '1'。 |
__INTEL_COMPILER (Windows*、Linux*、macOS*) |
VVSS 形式のインテル® コンパイラーのバージョン。ここで、VV はメジャーバージョン、SS はマイナーバージョンです。例えば、バージョン 16.0 の場合は 1600 になります。 |
__INTEL_COMPILER_BUILD_DATE (Windows*、Linux*、macOS*) |
インテル® コンパイラーのビルド日付を YYYYMMDD 形式で示します。ここで、YYYY は年、MM は月、DD は日です。 |
__INTEL_COMPILER_UPDATE (Windows*、Linux*) |
インテル® コンパイラーのバージョンのアップデート番号。例えば、Update 1 の場合は 1 になります。__INTEL_COMPILER も参照してください。 |
__INTEL_OFFLOAD (Windows*、Linux*) |
CPU とプロセッサーで実行するコードをビルドする場合は'1'。 デフォルトでは定義されています。[q または Q]offload オプションの否定形を指定した場合は未定義。 このシンボルと [q または Q]offload オプションの否定形を一緒に使用して、mic_lib.f90 の omp_set_num_threads_target API 呼び出しのようにオフロードビルドでのみ実行されるホスト上のコードを保護できます。 |
__linux__ __linux linux (Linux*) |
コンパイル開始時に '1' に定義されます。 |
_M_AMD64 (Windows*) |
インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。 |
_M_IX86=700 (Windows*) |
IA-32 アーキテクチャー向けにコードをビルドする場合は '1'。 |
_M_X64 (Windows*) |
インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。 |
__MACH__ (macOS*) |
'1'。 |
_MT (Windows*) |
/threads または /MT オプションを指定した場合は '1'。 |
_OPENMP=201611 (Windows*、Linux*、macOS*) |
OpenMP* 処理が要求された (つまり、[q または Q]openmp オプションが fpp オプションと一緒に指定された) 場合は定義されます。 値は YYYYMM 形式で、YYYY と MM はそれぞれサポートされる OpenMP* Fortran 仕様が公開された年と月を表します。 現在サポートされている OpenMP* API のバージョンは Technical Report 4: Version 5.0 (2016 年 11 月) です。 |
__PIC__ __pic__ (Linux*) |
位置に依存しないコードとしてコンパイルする場合は '1'。 |
__TARGET_ARCH_MIC (Windows*、Linux*) |
インテル® Xeon Phi™ プロセッサーで実行するコードをビルドする場合は'1'。デフォルトでは、インテル® MIC アーキテクチャー・ベースのプロセッサーのコンパイル時に定義されます。 [q または Q]offload オプションの否定形を使用する場合は未定義。 このシンボルを使用して、インテル® MIC アーキテクチャー・ベースのプロセッサー向けにコンパイルされ、同プロセッサー上でのみ実行されるようにコードを保護できます。 |
_WIN32 (Windows*) |
IA-32 またはインテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。 |
_WIN64 (Windows*) |
インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。 |
__x86_64 __x86_64__ (Linux*) |
インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。 |