Quero usar recursos do C ++ 17.
Como posso alternar a compilação de C ++ 14 para C ++ 17 no Microsoft Visual Studio?
Ou não está disponível nas versões de lançamento do VS?
Quero usar recursos do C ++ 17.
Como posso alternar a compilação de C ++ 14 para C ++ 17 no Microsoft Visual Studio?
Ou não está disponível nas versões de lançamento do VS?
Respostas:
Agora há uma lista suspensa (pelo menos desde o VS 2017.3.5) onde você pode selecionar especificamente C ++ 17. As opções disponíveis são (em projeto> Propriedades> C / C ++> Linguagem> Padrão de linguagem C ++)
/std:c++14
/std:c++17
/std:c++latest
(Aposto que assim que o C ++ 20 for lançado e for mais totalmente compatível com o Visual Studio, será /std:c++20
)
-std:c++14
, -std:c++17
e -std:c++latest
também funciona, por exemplo, quando você preferir inserir manualmente as opções do compilador (testado com VS2017).
-
às /std:
opções que listo?
gcc
ou clang
. Então, o -
é menos intrusivo (no entanto, a sintaxe ainda difere ligeiramente (em :
vez de =
)).
MSBuild (projeto / solução do Visual Studio * .vcproj / *. Sln ) :
Adicione a opções adicionais em Configurações do projeto: /std:c++latest
para habilitar os recursos mais recentes - atualmente C ++ 17 a partir do VS2017, VS2015 Atualização 3.
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
irá desativar as extensões C ++ não padrão e irá ativar a conformidade padrão no VS2017.
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
EDITAR (outubro de 2018): Os recursos mais recentes do VS2017 estão documentados aqui:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 suporta: /std:[c++14|c++17|c++latest]
agora. Esses sinalizadores podem ser definidos por meio das páginas de propriedades do projeto:
Para definir esta opção de compilador no ambiente de desenvolvimento Visual Studio
- Abra a caixa de diálogo Property Pages do projeto. Para obter detalhes, consulte Trabalhando com propriedades do projeto.
- Selecione Propriedades de configuração, C / C ++, linguagem.
- No C ++ Language Standard, escolha o padrão de idioma para oferecer suporte no controle suspenso e escolha OK ou Aplicar para salvar suas alterações.
CMake :
Visual Studio 2017 (15.7+) oferece suporte a projetos CMake. O CMake torna possível habilitar recursos modernos do C ++ de várias maneiras. A opção mais básica é habilitar um padrão C ++ moderno definindo uma propriedade de destino em CMakeLists.txt:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
No caso de uma biblioteca de interface:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
A Atualização 3 do Visual Studio 2015 não oferece suporte ao recurso C ++ 17 que você está procurando ( emplace_back()
retornando uma referência).
Suporte para recursos C ++ 11/14/17 (C ++ moderno)
Recursos do C ++ 11/14/17 no VS 2015 RTM
O STL do VS 2015 Atualização 2 é C ++ 17 até agora Recurso Completo
Se trouxer a solução Visual Studio 2015 existente para o Visual Studio 2017 e você quiser criá-la com o compilador nativo c ++ 17, você deve primeiro redirecionar a solução / projetos para v141, ENTÃO a lista suspensa aparecerá conforme descrito acima (Propriedades de configuração -> C / C ++ -> Idioma -> Padrão de idioma)
Versão do Visual Studio 2019:
O menu suspenso foi movido para:
c++11
ec++14
?