< 目次

インテル® Fortran コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス

init、Qinit

変数のクラスを 0 またはシグナル型 NaN に初期化します。

アーキテクチャーの制限

[Q]init keyword snan: インテル® Xeon Phi™ コプロセッサー x100 製品ファミリー (開発コード名 Knights Corner) をターゲットとするインテル® 64 アーキテクチャーでは利用できません。

構文

Linux* および OS X*:

-init=keyword

Windows®:

/Qinit:keyword

引数

keyword

変数のクラスの初期値を指定します。 設定可能な値は以下のとおりです。

[no]arrays

配列またはスカラーの変数を初期化するかどうかを指定します。 arrays を指定すると、配列またはスカラーの変数が初期化されます。 noarrays を指定すると、スカラーの変数のみ初期化されます。 [Q]init [no]arrays を指定する場合は、[Q]init snan または [Q]init zero も指定する必要があります。

[no]snan

REAL または COMPLEX 組込み型の初期化されていない保存済み、ローカル、自動、または割り当て済み変数を、すべてシグナル型 NaN に初期化するかどうかを指定します。

[no]zero

REAL、COMPLEX、INTEGER、または LOGICAL 組込み型の初期化されていない保存済み、ローカル、自動、または割り当て済み変数を、すべて 0 に初期化するかどうかを指定します。

/Qinit:[no]zero/Qzero[-] (Windows®) の後継オプション、-init=[no]zero-[no]zero (Linux* および OS X*) の後継オプションです。

デフォルト

オフ

デフォルトでは初期化は行われません。

説明

このオプションは、変数のクラスを 0 またはシグナル型 NaN に初期化します。

-init=zero または -init=snan (Linux* および OS X*) あるいは /Qinit:zero または /Qinit:snan (Windows®) オプションを指定すると、スカラー変数のみ初期化されます。 配列も初期化するには、-init=arrays (Linux* および OS X*) または Qinit:arrays (Windows®) オプションも指定する必要があります。

[Q]init snan[Q]init zero を一緒に指定する場合、REAL および COMPLEX 型の特定の変数はシグナル型 NaN に初期化され、INTEGER および LOGICAL 型の特定の変数は 0 に初期化されます。

[Q]init オプションは、次の変数のクラスに影響します。

このオプションに関する一般的な制限は以下のとおりです。

[Q]init snan を指定すると、シグナル型 NaN をトラップし停止するように浮動小数点例外処理フラグが設定されます。実行時にシグナル型 NaN がトラップされると、Fortran ライブラリーはそれをキャッチし、初期化されていない可能性のある変数に関するエラーメッセージとトレースバックを表示し、実行を停止します。 実行が停止したら、デバッガーを使って初期化されていない変数が参照されているコード位置を特定できます。

[Q]init snan を指定すると、fpe 0 オプションも設定されます。 コマンドラインで fpe 3[Q]init snan の両方を指定すると、コンパイル時に警告が出力されます。 この場合、fpe 3 は無視されます。

最適化を有効にしてビルドすると、コンパイラーはデフォルトの浮動小数点環境 (浮動小数点例外がマスクされる) を想定し、浮動小数点演算のスペキュレーションを行います。 [Q]init snan を追加すると、このスペキュレーションは例外となり (初期化されていない変数と無関係)、トラップされる可能性があります。 これを回避するには、初期化されていない変数を検出する際に、最適化レベルを /O1 または /Od (Windows®)、あるいは -O1 または -O0 (Linux* および OS X*) に下げます。

最適化レベルを維持したい場合は、スペキュレーションにより浮動小数点例外が生じる可能性があるときに、[Q]fp-speculation safe を追加してスペキュレーションを無効にします。

インテル® Xeon Phi™ コプロセッサー x100 製品ファミリー (開発コード名 Knights Corner) をターゲットとするインテル® 64 アーキテクチャーでは、シグナル型 NaN のトラッピングは利用できないため、[Q]init [no]snan は指定できません。

すべての変数を SAVE として指定する場合は、[Q]save を使用します。

IDE オプション

Visual Studio®: [Data (データ)] > [Initialize Variables to Signaling NaN (変数をシグナル型 NaN に初期化する)]

[Data (データ)] > [Initialize Variables to Zero (変数をゼロに初期化する)]

[Data (データ)] > [Initialize Arrays as well as Scalars (配列とスカラーの初期化)]

Eclipse*: なし

Xcode*: [Data (データ)] > [Initialize Variables to Signaling NaN (変数をシグナル型 NaN に初期化する)]

[Data (データ)] > [Initialize Variables to Zero (変数をゼロに初期化する)]

[Data (データ)] > [Initialize Arrays as well as Scalars (配列とスカラーの初期化)]

代替オプション

なし

次の例は、REAL および COMPLEX 組込み型のスカラーをシグナル型 NaN に初期化し、INTEGER および LOGICAL 組込み型のスカラーを 0 に初期化します。

-init=snan,zero               ! Linux* および OS X* システム
/Qinit:snan,zero              ! Windows® システム

次の例は、REAL および COMPLEX 組込み型のスカラーと配列をシグナル型 NaN に初期化し、INTEGER および LOGICAL 組込み型のスカラーと配列を 0 に初期化します。

-init=zero -init=snan -init=arrays       ! Linux* および OS X* システム
/Qinit:zero /Qinit:snan /Qinit:arrays      ! Windows® システム

[Q]init オプションを使用してランタイム時に初期化されていない浮動小数点変数の検出を行う例は、「インテル® Fortran での初期化されていない浮動小数点変数の検出」(https://software.intel.com/articles/detection-of-uninitialized-floating-point-variables-in-intel-fortran (英語)) を参照してください。

関連情報