インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
エラー検出を行いやすくするように、ローカル変数を異常な値に初期化します。
Linux* および macOS*: | -ftrapuv |
Windows*: | /Qtrapuv |
なし
オフ |
コンパイラーはローカル変数を初期化しません。 |
このオプションは、エラー検出を行いやすくするように、ローカル変数を異常な値に初期化します。通常、これらのローカル変数はアプリケーションで初期化します。このオプションは、無効な浮動小数点例外のマスク解除も行います。
オプションは、スタックに割り当てられている初期化されていないローカル変数に、一般的に非常に大きな整数または無効なアドレスとして解釈される値を設定します。これらの変数を参照すると、ランタイムエラーが発生し、コーディング・エラーを検出するのに役立ちます。
このオプションは、デフォルトの最適化レベルを O2 から -O0 (Linux* および macOS*) または /Od (Windows*) に変更する -g オプション (Linux* および macOS*) と /Zi または /Z7 オプション (Windows*) を設定します。これは、明示的に O オプションの設定を指定することで無効にできます。
O2 オプションと -ftrapuv オプション (Linux* および macOS*) または /Qtrapuv オプション (Windows*) を一緒に使用する場合は、浮動小数点演算のスペキュレーションがトラップされ、例外が発生しないように、-fp-speculation safe オプション (Linux* および macOS*) または /Qfp-speculation:safe オプション (Windows*) も指定すべきです。
-ftrapuv と /Qtrapuv を O コンパイラー・オプションと一緒に使用する場合の詳細は、インテル® デベロッパー・ゾーンの記事「Don't optimize when using -ftrapuv for uninitializedvariable detection」(https://software.intel.com/en-us/articles/dont-optimize-when-using-ftrapuv-for-uninitialized-variable-detection/ (英語)) を参照してください。
初期化されていないローカルスカラー変数を検出する別の方法として、uninit キーワードを指定して check オプションを使用できます。
Visual Studio*: なし
Eclipse*: [Run-time (ランタイム)] > [Initialize stack variables to an unusual value (変数を異常な値に初期化する)]
Xcode*: [Code Generation (コード生成)] > [Initialize Stack Variables to an Unusual Value (変数を異常な値に初期化する)]
なし