/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

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойств сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. В поле "Дополнительные параметры" добавьте /volatile:iso или /volatile:ms, а затем нажмите кнопку "ОК" или "Применить", чтобы сохранить изменения.

См. также

volatile
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC