/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。 选择“确定”或“应用”以保存更改。

另请参阅

/Zc(一致性)\