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?
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?
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
)
-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
o clang
. 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:
Para configurar esta opción del compilador en el entorno de desarrollo de Visual Studio
- Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para obtener más información, consulte Trabajar con propiedades del proyecto.
- Seleccione Propiedades de configuración, C / C ++, Idioma.
- En C ++ Language Standard, elija el estándar de idioma para admitir desde el control desplegable, luego elija Aceptar o Aplicar para guardar los cambios.
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:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
En el caso de una biblioteca de interfaz:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
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
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)
Versión de Visual Studio 2019:
El menú desplegable se movió a:
c++11
yc++14
?