/Zc:tlsGuards (TLS 初期化の確認)

/Zc:tlsGuards コンパイラ オプションは、DLL でのスレッド ローカル ストレージ (TLS) 初期化のランタイム チェックを生成します。

構文

/Zc:tlsGuards[-]

解説

/Zc:tlsGuards コンパイラ オプションを使用すると、DLL 内のスレッド ローカル変数の初期化を確認できます。 以前は、DLL のスレッドローカル変数が正しく初期化されていませんでした。 DLL を読み込んだスレッド以外では、DLL が読み込まれる前に存在したスレッドで最初に使用されるまで、正しく初期化されませんでした。 /Zc:tlsGuards オプションを使用すると、この欠陥を修正するコードが有効になります。 このような DLL のスレッドローカル変数は、そのようなスレッドで最初に使用される直前に初期化されます。

/Zc:tlsGuards オプションは、Visual Studio 2019 バージョン 16.5 の新機能です。 このオプションは、すべてのコンパイラ モードで既定でオンになっています。 スレッド ローカル変数の使用に対する初期化のテストの新しい動作は、 /Zc:tlsGuards- コンパイラ オプションを使用して無効にすることができます。 特定のスレッド ローカル変数のチェックを無効にするには、 [[msvc::no_tls_guard]] 属性を使用します。

このコンパイラ オプションを Visual Studio で使用するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。

  3. 追加オプションで/Zc:tlsGuardsを追加します。 [OK] または [適用] を選択して、変更内容を保存します。

関連項目

/Zc (準拠)\