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

IA-32 は、macOS* では利用できません。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

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

次の表に示すプリプロセッサー・シンボルは、コンパイラー・システムによって事前定義されており、コンパイラー・ディレクティブおよび fpp で使用できます。ほかのシンボル名を使用する場合は、コマンド行で指定します。

前処理中に使用されるシンボル名を定義するには、D コンパイラー・オプションを使用します。このオプションの機能は、#define プリプロセッサー・ディレクティブと同じです。

fpp を使用して前処理を行うと、定義したシンボルの名前が検出されるたびに、指定されている値に置換されます。前処理コンパイラー・ディレクティブでは、IF と IF DEFINED のみ許可されています。

前処理時のシンボルの置換 (マクロの展開とも呼ぶ) を無効にするには、fppmacro=no プリプロセッサー・オプションを指定します。

前処理時のシンボルの置換を無効にすると、条件付きコンパイル (#ifdef の使用など) の置換を行わずに fpp を実行することができます。

プリプロセッサー・シンボルの自動定義を抑止するには、U プリプロセッサー・オプションを使用します。このオプションは、指定された名前に対し、現在有効になっているシンボル定義を抑止するために使用します。このオプションの機能は、#undef プリプロセッサー・ディレクティブと同じです。

次の表のプリプロセッサー・シンボルは、fpp と Fortran コンパイラーの条件付きコンパイルの両方で使用することができます。

シンボル 説明

__APPLE__

(macOS*)

'1'。

__AVX512BW__

(Windows*、Linux*、macOS*)

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) バイト命令およびワード命令 (BWI) をサポートしているプロセッサーの場合は '1'。

[Q]xCORE-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。

__AVX512CD__

(Windows*、Linux*、macOS*)

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 競合検出命令 (CDI) をサポートしているプロセッサーの場合は '1'。

[Q]xCORE-AVX512 または [Q]xCOMMON-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。

__AVX512DQ__

(Windows*、Linux*、macOS*)

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) ダブルワード命令およびクワッドワード命令 (DQI) をサポートしているプロセッサーの場合は '1'。

[Q]xCORE-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。

__AVX512ER__

(Windows*、Linux*、macOS*)

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 指数および逆数命令をサポートしているプロセッサーの場合は '1'。

__AVX512F__

(Windows*、Linux*、macOS*)

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 基本命令をサポートしているプロセッサーの場合は '1'。

[Q]xCORE-AVX512 または [Q]xCOMMON-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。

__AVX512PF__

(Windows*、Linux*、macOS*)

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) プリフェッチ命令 (PFI) をサポートしているプロセッサーの場合は '1'。

__AVX512VL__

(Windows*、Linux*、macOS*)

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) ベクトル長拡張命令をサポートしているプロセッサーの場合は '1'。

[Q]xCORE-AVX512 以上のプロセッサー・ターゲット・オプションを指定した場合も '1'。

_DEBUG

(Windows*)

/dbglibs/MT[d]/MD[d] オプションを指定した場合は '1'。

_DLL

(Windows*)

次のいずれかのオプションが明示的または暗黙的に指定された場合は '1'。

  • /libs:dll

  • /MD

  • /MDd

  • /MDs

__ELF__

(Linux*)

コンパイル開始時に '1' に定義されます。

__gnu_linux__

(Linux*)

コンパイル開始時に '1' に定義されます。

__i386__

__i386

i386

(Linux*、macOS*)

IA-32 アーキテクチャーを対象にコンパイルする場合は '1' (C++ のみ)。IA-32 は、macOS* では利用できません。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

__INTEL_COMPILER

(Windows*、Linux*、macOS*)

VVVVMU 形式のコンパイラーのバージョン。ここで、VVVV はメジャーバージョン、M はマイナーバージョン、U はアップデート・バージョンです。例えば、バージョン 2021.1.2 の場合は 202112 になります。__INTEL_LLVM_COMPILER も参照してください。

__INTEL_COMPILER_BUILD_DATE

(Windows*、Linux*、macOS*)

コンパイラーのビルド日付を YYYYMMDD 形式で示します。ここで、YYYY は年、MM は月、DD は日です。

__INTEL_COMPILER_UPDATE

(Windows*、Linux*)

コンパイラーのバージョンのアップデート番号。例えば、Update 1 の場合は 1 になります。__INTEL_COMPILER も参照してください。

__INTEL_LLVM_COMPILER

(Windows*、Linux*)

VVVVMMUU 形式のコンパイラーのバージョン1。ここで、VVVV はメジャー・リリース・バージョン、MM はマイナー・リリース・バージョン、UU はアップデート番号です。例えば、ベースリリースである 2021.1 は値 20210100 で表されます。

このシンボルは CMake でも認識され、ifx でのみ利用できます。__INTEL_COMPILER も参照してください。

__linux__

__linux

linux

(Linux*)

コンパイル開始時に '1' に定義されます。

_M_AMD64

(Windows*)

インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。

_M_IX86=700

(Windows*)

IA-32 アーキテクチャー向けにコードをビルドする場合は '1' (C++ のみ)。IA-32 は、macOS* では利用できません。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

_M_X64

(Windows*)

インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。

__MACH__

(macOS*)

'1'。

_MT

(Windows*)

/threads または /MT オプションを指定した場合は '1'。

_OPENMP=201611

(Windows*、Linux*、macOS*)

OpenMP* 処理が要求された (つまり、[q または Q]openmp オプションが fpp オプションと一緒に指定された) 場合は定義されます。

値は YYYYMM 形式で、YYYYMM はそれぞれサポートされる OpenMP* Fortran 仕様が公開された年と月を表します。

現在サポートされている OpenMP* API のバージョンは 5.0 TR4 (2016 年 11 月) です。OpenMP* バージョン 5.1 の一部の機能もサポートされています。

__PIC__

__pic__

(Linux*)

位置に依存しないコードとしてコンパイルする場合は '1'。

__SYCL_COMPILER_VERSION (Windows*、Linux*、macOS*)

SYCL* ライブラリーのビルド日付を YYYYMMDD 形式で示します。

このシンボルは ifx でのみ利用できます。

これは、ソースコードに SYCL* ライブラリーのヘッダーをインクルードしている場合にのみ使用できます。

SYCL_LANGUAGE_VERSION

SYCL* コードをコンパイルする場合にのみ定義されます。

このシンボルは ifx でのみ利用できます。

_WIN32

(Windows*)

IA-32 またはインテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。

IA-32 は、macOS* では利用できません。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

_WIN64

(Windows*)

インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。

__x86_64

__x86_64__

(Linux*、macOS*)

インテル® 64 アーキテクチャー向けにコードをビルドする場合は '1'。

脚注:

1 インテル® Fortran コンパイラー (ifx) 2021.1 は、このマクロの __INTEL_COMPILER 形式を生成します。以降のリリースでは、ドキュメントに記載されている形式が使用されます。

関連情報