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?
c++
visual-studio
compilation
c++17
Tudvari
fonte
fonte
c++11
ec++14
?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
)fonte
-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
ouclang
. 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: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:
No caso de uma biblioteca de interface:
fonte
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
Atualização 3 do Visual Studio 2015
Correções STL na atualização 3 do VS 2015
fonte
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)
fonte
Versão do Visual Studio 2019:
O menu suspenso foi movido para:
fonte