/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
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.
Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.
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