/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 (準拠)\