Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
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:__cpluspluso/Zc:__cplusplus-al panel Opciones adicionales.
Consulte también
/Zc (Conformidad)
/std (Especificar la versión estándar del lenguaje)
Macros predefinidas