/volatile(volatile 关键字解释)
指定如何解释 volatile 关键字。
语法
/volatile:{iso|ms}
参数
/volatile:iso
选择 ISO 标准 C++ 语言定义的严格 volatile
语义。 acquire/release 语义在 volatile 访问中不能得到保证。 如果编译器面向 ARM(ARM64EC 除外),则是 volatile
的默认解释。
/volatile:ms
选择 Microsoft 扩展的 volatile
语义,它增加了超出 ISO 标准 C++ 语言的内存排序保证。 acquire/release 语义在 volatile 访问中得到保证。 但是,此选项也强制编译器生成硬件内存障碍,这可能会在 ARM 和其他弱内存排序体系结构上增加大量开销。 如果编译器面向 ARM64EC 或任何非 ARM 平台,则是 volatile
的默认解释。
备注
强烈建议在处理跨线程共享的内存时,使用 /volatile:iso 以及显式同步基元和编译器内部函数。 有关详细信息,请参阅 volatile。
如果在项目中间移植现有代码或更改此选项,则启用警告 C4746 来识别受语义差异影响的代码位置可能很有帮助。
没有 #pragma
等效项来控制此选项。
在 Visual Studio 中设置 /volatile 编译器选项
打开项目的“属性页”对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“命令行”属性页。
在“附加选项”框中,添加“/volatile:iso”或“/volatile:ms”,然后选择“确定”或“应用”保存更改。