Compartir vía


/Zc:__cplusplus (Habilitar la macro __cplusplus actualizada)

La opción del compilador /Zc:__cplusplus habilita la macro de preprocesador __cplusplus para notificar un valor actualizado para la compatibilidad con estándares recientes del lenguaje C++. De forma predeterminada, Visual Studio siempre devuelve el valor 199711Lpara la macro de preprocesador __cplusplus.

Sintaxis

/Zc:__cplusplus[-]

Comentarios

La macro de preprocesador __cplusplus se usa habitualmente para notificar la compatibilidad con una versión concreta del estándar C++. Como parece que una gran cantidad de código existente depende de que el valor de esta macro coincida con 199711L, el compilador no cambia el valor de la macro a menos que lo haga de forma explícita mediante la opción del compilador /Zc:__cplusplus. La opción /Zc:__cplusplus está disponible a partir de Visual Studio 2017 versión 15.7 y está desactivada de forma predeterminada. En versiones anteriores de Visual Studio, y de forma predeterminada, o bien si se especifica /Zc:__cplusplus-, Visual Studio devuelve el valor 199711L para la macro de preprocesador __cplusplus. La opción /permissive- no habilita /Zc:__cplusplus.

Cuando se habilita la opción /Zc:__cplusplus, el valor notificado por la macro __cplusplus depende del valor del modificador de versión /std. En esta tabla se muestran los posibles valores para la macro:

/Zc:__cplusplus opción /std opción Valor de __cplusplus
Zc:__cplusplus /std:c++14 (valor predeterminado) 201402L
Zc:__cplusplus /std:c++17 201703L
Zc:__cplusplus /std:c++20 202002L
Zc:__cplusplus /std:c++latest ver texto
Zc:__cplusplus- (deshabilitado) Cualquier valor 199711L
No especificado Cualquier valor 199711L

El compilador no admite modificadores de estándares para C++98, C++03 ni C++11. La opción /std:c++20 está disponible a partir de la versión 16.11 de Visual Studio 2019. El valor de __cplusplus con la opción /std:c++latest depende de la versión de Visual Studio. Siempre es al menos uno mayor que el valor estándar más alto admitido compatible __cplusplus con la versión de Visual Studio.

Para obtener una detección más precisa de los cambios realizados en el conjunto de herramientas del compilador, use la macro predefinida _MSC_VER. El valor de esta macro integrada se incrementa para cada actualización del conjunto de herramientas en Visual Studio 2017 y versiones posteriores. La macro predefinida _MSVC_LANG notifica a la versión del estándar si la opción /Zc:__cplusplus está habilitada o deshabilitada. Cuando /Zc:__cplusplus está habilitado, __cplusplus tiene el mismo valor que _MSVC_LANG.

Para establecer esta opción del compilador en Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. Agregue /Zc:__cplusplus o /Zc:__cplusplus- al panel Opciones adicionales.

Consulte también

/Zc (Conformidad)
/std (Especificar la versión estándar del lenguaje)
Macros predefinidas