Quiero usar las funciones de C ++ 17.
¿Cómo puedo cambiar la compilación de C ++ 14 a C ++ 17 en Microsoft Visual Studio?
¿O no está disponible en las versiones de lanzamiento de VS?
c++
visual-studio
compilation
c++17
Tudvari
fuente
fuente
c++11
yc++14
?Respuestas:
Ahora hay un menú desplegable (al menos desde VS 2017.3.5) donde puede seleccionar específicamente C ++ 17. Las opciones disponibles son (en proyecto> Propiedades> C / C ++> Lenguaje> Estándar de lenguaje C ++)
/std:c++14
/std:c++17
/std:c++latest
(Apuesto a que una vez que C ++ 20 esté disponible y sea más compatible con Visual Studio, lo será
/std:c++20
)fuente
-std:c++14
,-std:c++17
y-std:c++latest
también funciona, por ejemplo, cuando prefiere ingresar manualmente las opciones del compilador (probado con VS2017).-
los/std:
interruptores que enumero?gcc
oclang
. Entonces-
es menos intrusivo (sin embargo, la sintaxis aún difiere ligeramente (en:
lugar de=
)).MSBuild (proyecto / solución de Visual Studio * .vcproj / *. Sln ) :
Agregar a opciones adicionales en Configuración del proyecto:
/std:c++latest
para habilitar las funciones más recientes, actualmente C ++ 17 a partir de VS2017, VS2015 Update 3.https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
deshabilitará las extensiones de C ++ no estándar y habilitará la conformidad estándar en VS2017.https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
EDITAR (octubre de 2018): Las últimas características de VS2017 están documentadas aquí:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 admite:
/std:[c++14|c++17|c++latest]
ahora. Estas banderas se pueden configurar a través de las páginas de propiedades del proyecto:CMake :
Visual Studio 2017 (15.7+) admite proyectos de CMake. CMake hace posible habilitar las características modernas de C ++ de varias formas. La opción más básica es habilitar un estándar C ++ moderno estableciendo la propiedad de un objetivo en CMakeLists.txt:
En el caso de una biblioteca de interfaz:
fuente
Visual Studio 2015 Update 3 no es compatible con la función C ++ 17 que está buscando (
emplace_back()
devuelve una referencia).Compatibilidad con funciones de C ++ 11/14/17 (C ++ moderno)
Características de C ++ 11/14/17 en VS 2015 RTM
El STL de VS 2015 Update 2 es C ++ 17 hasta ahora Característica completa
Visual Studio 2015 Update 3
Correcciones de STL en VS 2015 Update 3
fuente
Si trae la solución de Visual Studio 2015 existente a Visual Studio 2017 y desea compilarla con el compilador nativo de c ++ 17, primero debe Reorientar la solución / proyectos a v141, ENTONCES el menú desplegable aparecerá como se describe arriba (Propiedades de configuración -> C / C ++ -> Idioma -> Estándar de idioma)
fuente
Versión de Visual Studio 2019:
El menú desplegable se movió a:
fuente