Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A opção do compilador /Zc:__cplusplus habilita a macro do pré-processador __cplusplus para relatar um valor atualizado para o suporte recente de padrões da linguagem C++. Por padrão, o Visual Studio sempre retorna o valor 199711L para a macro do pré-processador __cplusplus.
Sintaxe
/Zc:__cplusplus[-]
Comentários
A macro do pré-processador __cplusplus normalmente é usada para relatar o suporte a uma versão específica do padrão do C++. Como muitos códigos existentes parecem depender do valor dessa macro corresponder a 199711L, o compilador não altera o valor da macro, a menos que você o aceite explicitamente usando a opção do compilador /Zc:__cplusplus. A opção /Zc:__cplusplus está disponível no Visual Studio 2017 versão 15.7 em diante e está desativada por padrão. Em versões anteriores do Visual Studio e por padrão ou se /Zc:__cplusplus- for especificado, o Visual Studio retornará o valor 199711L para a macro do pré-processador __cplusplus. A opção /permissive- não habilita /Zc:__cplusplus.
Quando a opção /Zc:__cplusplus está habilitada, o valor relatado pela macro __cplusplus vai depender da configuração da opção da versão /std. Esta tabela mostra os possíveis valores para a macro:
/Zc:__cplusplus option |
/std option |
__cplusplus valor |
|---|---|---|
Zc:__cplusplus |
/std:c++14 (padrão) |
201402L |
Zc:__cplusplus |
/std:c++17 |
201703L |
Zc:__cplusplus |
/std:c++20 |
202002L |
Zc:__cplusplus |
/std:c++latest |
ver texto |
Zc:__cplusplus- (desabilitado) |
Qualquer valor | 199711L |
| Não especificado | Qualquer valor | 199711L |
O compilador não dá suporte a opções de padrões para C++98, C++03 ou C++11. A opção /std:c++20 está disponível a partir do Visual Studio 2019 versão 16.11. O valor de __cplusplus com a opção /std:c++latest dependerá da versão do Visual Studio. Ele sempre será, pelo menos, um valor maior que o padrão __cplusplus mais alto com suporte na sua versão do Visual Studio.
Para obter uma detecção mais refinada de alterações no conjunto de ferramentas do compilador, use a macro predefinida _MSC_VER. O valor dessa macro interna é incrementado para cada atualização do conjunto de ferramentas no Visual Studio 2017 e versões posteriores. A macro predefinida _MSVC_LANG relatará a versão padrão se a opção /Zc:__cplusplus estiver habilitada ou desabilitada. Quando /Zc:__cplusplus está habilitada, __cplusplus tem o mesmo valor que _MSVC_LANG.
Para definir essa opção do compilador no Visual Studio
Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, 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.
Adicione
/Zc:__cplusplusou/Zc:__cplusplus-ao painel Opções adicionais:.
Confira também
/Zc (Conformidade)
/std (Especificar a versão padrão da linguagem)
Macros predefinidas