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