/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 199711L
para 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
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.
Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.
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