/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 で使用するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
追加オプションで
/Zc:tlsGuards
を追加します。 [OK] または [適用] を選択して、変更内容を保存します。