Compartilhar via


/volatile (Interpretação da palavra-chave volatile)

Especifica como a palavra-chave volatile deve ser interpretada.

Sintaxe

/volatile:{iso|ms}

Argumentos

/volatile:iso
Seleciona semântica estrita volatile conforme definido pela linguagem C++ padrão ISO. A semântica de aquisição/liberação não é garantida em acessos voláteis. Se o compilador tiver como destino o ARM (exceto ARM64EC), essa será a interpretação padrão de volatile.

/volatile:ms
Seleciona a semântica estendida volatile da Microsoft, que adiciona garantias de ordenação de memória além da linguagem C++ padrão ISO. A semântica de aquisição/liberação é garantida em acessos voláteis. No entanto, essa opção também força o compilador a gerar barreiras de memória de hardware, o que pode adicionar uma sobrecarga significativa no ARM e em outras arquiteturas de ordenação de memória fracas. Se o compilador tiver como destino o ARM64EC ou qualquer plataforma não ARM, esta será a interpretação padrão de volatile.

Comentários

É altamente recomendável que você use /volatile:iso junto com primitivas de sincronização explícitas e intrínsecos do compilador quando estiver lidando com memória compartilhada entre threads. Para obter mais informações, consulte volatile.

Se você portar o código existente ou alterar essa opção no meio de um projeto, pode ser útil ativar o aviso C4746 para identificar os locais do código que são afetados pela diferença na semântica.

Não há #pragma equivalente para controlar esta opção.

Para definir a opção de compilador /volatile no Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter mais informações, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.

  3. Na caixa Opções adicionais, adicione /volatile:iso ou /volatile:ms e escolha OK ou Aplicar para salvar suas alterações.

Confira também

volatile
Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC