/volatile (интерпретация ключевого слова volatile)
Указывает способ интерпретации изменяемого ключевого слова.
Синтаксис
/volatile:{iso|ms}
Аргументы
/volatile:iso
Выбирает строгую volatile
семантику, определяемую языком C++ стандарта ISO. Семантика получения и выпуска не гарантируется при переменных доступах. Если компилятор предназначен для ARM (кроме ARM64EC), это интерпретация volatile
по умолчанию.
/volatile:ms
Выбирает расширенную volatile
семантику Майкрософт, которая добавляет гарантии упорядочивания памяти за пределами языка C++ стандарта ISO. Семантика получения и выпуска гарантируется при переменных доступах. Однако этот параметр также заставляет компилятора создавать аппаратные барьеры памяти, что может привести к значительной нагрузке на ARM и других слабых архитектурах упорядочения памяти. Если компилятор предназначен для ARM64EC или любой платформы, отличной от ARM, это интерпретация volatile
по умолчанию.
Замечания
Настоятельно рекомендуется использовать /volatile:iso вместе с явными примитивами синхронизации и встроенными компонентами компилятора при работе с памятью, совместно используемой в потоках. Дополнительные сведения см. в разделе "Переменная".
Если вы переносите существующий код или изменяете этот параметр в середине проекта, может быть полезно включить предупреждение C4746 для определения расположений кода, затронутых разницей в семантике.
Этот параметр не #pragma
может быть эквивалентен управлению этим параметром.
Установка параметра /volatile компилятора в Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойств сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
В поле "Дополнительные параметры" добавьте /volatile:iso или /volatile:ms, а затем нажмите кнопку "ОК" или "Применить", чтобы сохранить изменения.
См. также
volatile
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC