Microsoft Visual C++
Microsoft Visual C++ (MSVC) es un compilador para los lenguajes de programación C, C++, C++/CLI y C++/CX de Microsoft. MSVC es software propietario; originalmente era un producto independiente, pero luego se convirtió en parte de Visual Studio y estuvo disponible tanto en forma de software de prueba como gratuito. Cuenta con herramientas para desarrollar y depurar código C++, especialmente código escrito para la API de Windows, DirectX y.NET.
Muchas aplicaciones requieren paquetes de biblioteca de tiempo de ejecución de Visual C++ redistribuibles para funcionar correctamente. Estos paquetes se instalan con frecuencia por separado de las aplicaciones que admiten, lo que permite que varias aplicaciones utilicen el paquete con una sola instalación. Estos paquetes redistribuibles y de tiempo de ejecución de Visual C++ se instalan principalmente para bibliotecas estándar que utilizan muchas aplicaciones.
Historia
El predecesor de Visual C++ se llamaba Microsoft C/C++. También había un Microsoft QuickC 2.5 y un Microsoft QuickC para Windows 1.0. El compilador de Visual C++ todavía se conoce como Microsoft C/C++ y, a partir del lanzamiento de Visual C++ 2015 Update 2, se encuentra en la versión 14.0.23918.0.
Versiones de 16 bits
- Microsoft C 1.0, basado en Lattice C, fue el primer producto C de Microsoft en 1983. No era compatible con K.C.
- C 2.0 agregó un gran soporte de modelo, permitiendo hasta 1MiB tanto para el Segmento de Códigos como para el Segmento de Datos.
- C 3.0 fue la primera versión desarrollada dentro de Microsoft. Esta versión pretendía compatibilizar con KENTR y el estándar ANSI posterior. Se estaba utilizando dentro de Microsoft (para el desarrollo de Windows y Xenix) a principios de 1984. Se envió como producto en 1985.
- C 4.0 agregó optimizaciones y CodeView, un depurador de nivel fuente.
- C 5.0 agregó optimizaciones de bucle y soporte de ‘modelo de memoria de caza’ (arrayas más grandes que 64 KB). Microsoft Fortran y el primer compilador de 32 bits para 80386 también formaron parte de este proyecto.
- C 5.1 publicado en 1988 permitió compilar programas para OS/2 1.x.
- C 6.0 liberado en 1989. Añadió el Workbench del programador IDE, análisis de flujo global, un navegador fuente, y un nuevo depurador, e incluyó un frontal C++ opcional.
- C/C++ 7.0 fue liberado en 1992. Añadido soporte integrado para C++ y MFC (Microsoft Foundation Class Library) 1.0.
- Visual C++ 1.0, que incluyó MFC 2.0, fue la primera versión de ‘Visual’ C+++, publicada en febrero de 1993. Fue Cfront 2.1 compatible y disponible en dos ediciones:
- Estándar: Rápido reemplazado C para Windows.
- Profesional: reemplazado C/C++ 7.0. Incluido la capacidad de construir aplicaciones DOS y Windows, un compilador optimizador, un perfilador de fuente y el SDK Windows 3.1. También se incluyó el Phar Lap 286 DOS Extender Lite.
- Visual C++ 1.5 fue liberado en diciembre de 1993, incluido el MFC 2.5, y añadió apoyo OLE 2.0 y ODBC al MFC. Fue la primera versión de Visual C++ que llegó sólo en CD-ROM.
- Visual C++ 1.51 y 1.52 estaban disponibles como parte de un servicio de suscripción.
- Visual C++ 1.52b es similar a 1.52, pero no incluye el Control Development Kit.
- Visual C++ 1.52c fue una versión parcheada de 1.5. Es la última, y posiblemente más popular, plataforma de desarrollo para Microsoft Windows 3.x. Está disponible a través de Microsoft Developer Network.
Versiones estrictamente de 32 bits
- Visual C++ 1.0 (nombre original: Visual C+++ 32-bit Edition) fue la primera versión para el desarrollo de 32 bits para la arquitectura Intel 386. Aunque se publicó cuando la versión 1.5 de 16 bits estaba disponible, no incluía soporte para OLE2 y ODBC. También estaba disponible en un paquete llamado Visual C++ 16/32-bit Suite, que incluía Visual C++ 1.5.
- Visual C++ 2.0, que incluía MFC 3.0, fue la primera versión en ser de sólo 32 bits. De muchas maneras, esta versión estaba por delante de su tiempo, ya que Windows 95, entonces codificado "Chicago", todavía no fue liberado, y Windows NT tenía sólo una pequeña cuota de mercado. Microsoft incluyó y actualizó Visual C++ 1.5 como parte de los lanzamientos de 2.x hasta 2.1, que incluye Visual C++ 1.52, y se incluyó la versión de 16 bits y 32 bits del Control Development Kit (CDK). Visual C++ 2.x también apoyó el desarrollo de Win32s. Está disponible a través de Microsoft Developer Network. Hubo una Visual C++ 2.0 RISC Edition para procesadores MIPS y Alpha, así como una edición multiplataforma para el Macintosh (68000 conjunto de instrucciones).
- Visual C++ 2.1 y 2.2 fueron actualizaciones para 2.0 disponibles a través de suscripción.
- Visual C++ 4.0, lanzado el 1995-12-11, presentó el IDE de Developer Studio. Su diseño de los paneles no superpuestos, panel de navegación, panel de depurador de nivel de editor combinado y panel de salida de consola, continúa a través de la línea de productos de Visual Studio (a partir de 2013). Visual C++ 4.0 incluido MFC 4.0, fue diseñado para Windows 95 y Windows NT. Para permitir el apoyo a los proyectos heredados (Windows 3.x/DOS), 4.0 fue incluido en el CD de instalación Visual C++ 1.52. Las actualizaciones disponibles a través de la suscripción incluye Visual C++ 4.1, que vino con el SDK de Microsoft Game (más tarde publicado por separado como el SDK DirectX), y Visual C++ 4.2. Se saltó la versión 3.0 para lograr la paridad del número de versión entre Visual C++ 4.0 y MFC 4.0.
- Visual C++ 4.2 no apoyó el desarrollo de Windows 3.x (Win32s). Esta fue la versión final con una edición multiplataforma para el Mac disponible y difiere de la versión 2.x en que también permitió la compilación para el conjunto de instrucciones PowerPC.
- Visual C++ 5.0, que incluyó MFC 4.21 y fue lanzado 1997-04-28, fue una mejora importante desde 4.2. Disponible en cuatro ediciones: Aprendizaje, Profesional, Empresa y RISC.
- Visual C++ 6.0 (commonly known as VC6), which included MFC 6.0, was released in 1998. La liberación fue algo controvertida, ya que no incluyó una actualización prevista para el MFC. Visual C++ 6.0 sigue siendo muy popular y a menudo se utiliza para mantener proyectos heredados. Sin embargo, hay problemas con esta versión bajo Windows XP, especialmente bajo el modo de depuración (por ejemplo, los valores de las variables estáticas no muestran). Los problemas de depuración se pueden resolver con un parche llamado "Visual C++ 6.0 Processor Pack". Número de versión: 12.00.8804
- Visual C++.NET 2002 (también conocido como Visual C++ 7.0), que incluía MFC 7.0, fue lanzado en 2002 con soporte para la generación de códigos de tiempo de conexión y depuración de controles de tiempo de ejecución, NET 1.0, y Visual C# y Managed C++. La nueva interfaz de usuario utilizó muchas de las claves y convenciones de Visual Basic, que representaron algunas de sus impopularidades entre los desarrolladores C++. Número de versión: 13.00.9466
- Visual C++.NET 2003 (también conocido como Visual C++ 7.1), que incluía MFC 7.1, fue lanzado en 2003 junto con. NET 1.1 y fue una mejora importante para Visual C++.NET 2002. Se consideró un parche a Visual C++.NET 2002. En consecuencia, la versión de actualización en inglés de Visual Studio. NET 2003 envió por un coste mínimo a los propietarios de la versión en inglés de Visual Studio. NET 2002. Esta fue la última versión para apoyar a Windows 95 y NT 4.0 como un objetivo (ejecutivos creados con Visual C++ 2005 tienen una referencia a la función IsDebuggerPresent en kernel32.dll que sólo existe en Windows 98 y posterior). Número de versión: 13.10.3077
- e Mbedded Visual C++ en varias versiones se utilizó para desarrollar para algunas versiones del sistema operativo Windows CE. Inicialmente reemplazó un entorno de desarrollo consistente en herramientas agregadas a Visual C++ 6.0. eMbedded Visual C++ fue reemplazado por Microsoft Visual Studio 2005.
Versiones de 32 y 64 bits
- Visual C++ 2005 (también conocido como Visual C++ 8.0), que incluía MFC 8.0, fue lanzado en noviembre de 2005. Esta versión soporta. NET 2.0 e incluye una nueva versión de C++ dirigida a la. Marco NET (C++/CLI) con el propósito de reemplazar la versión anterior (Managed C+++). Gestionado C+ para CLI sigue disponible a través de opciones de compilador. También introdujo OpenMP. Con Visual C++ 2005, Microsoft también introdujo Team Foundation Server. Visual C++ 8.0 tiene problemas para compilar proyectos MFC AppWizard que fueron creados utilizando Visual Studio 6.0, por lo que el mantenimiento de proyectos heredados puede continuar con el IDE original si la reescritura no es factible. Visual C++ 2005 es la última versión capaz de seleccionar Windows 98 y Windows Me. La versión SP1 (14.00.50727.762) también está disponible en Microsoft Windows SDK Update para Windows Vista.
- Visual C++ 2008 (también conocido como Visual C++ 9.0) fue lanzado en noviembre de 2007. Esta versión soporta. NET 3.5. Gestionado C+ para CLI todavía está disponible a través de opciones de compilador. Por defecto, todas las aplicaciones compiladas contra el Visual C++ 2008 Runtimes (enlace estático y dinámico) solo funcionarán en Windows 2000, Windows XP SP2 y más tarde. Un paquete de características lanzado para VC9, más tarde incluido en SP1, agregó soporte para extensiones de biblioteca C++ TR1. SP1 versión (15.00.30729.01) también está disponible en Microsoft Windows SDK para Windows 7.
- Algunas versiones de Visual C++ apoyaron Itanium 2.
- Visual C++ 2010 (también conocido como Visual C++ 10.0) fue lanzado el 12 de abril de 2010. Utiliza una base de datos SQL Server Compact para almacenar información sobre el código fuente, incluida la información IntelliSense, para mejorar el soporte IntelliSense y el código completo. Sin embargo, Visual C++ 2010 no admite Intellisense para C++/CLI. Esta versión añade una biblioteca de computación paralela C++ llamada Biblioteca Pautas Paralela, soporte parcial para C++11, IntelliSense mejorado significativamente basado en el frente de Edison Design Group, y mejoras de rendimiento tanto para el compilador como para el código generado. Esta versión está construida. NET 4.0, pero admite compilación a código de máquina. El soporte parcial C++11 consiste principalmente en seis características de compilador: lambdas, referencias rvalue, auto, decltype, static_assert y nullptr. C++11 también admite funciones de biblioteca (por ejemplo, moviendo los componentes TR1 de std::tr1 namespace directamente a std namespace). También se consideraron las plantillas varídicas, pero se retrasaron hasta que se diera una versión futura debido a la menor prioridad, que se debió al hecho de que, a diferencia de otras características costosas a la ejecución (referencias de lambda, referencias rvalue), las plantillas varídicas beneficiarían sólo a una minoría de escritores de bibliotecas en lugar de la mayoría de usuarios finales del compilador. Por defecto, todas las aplicaciones compiladas contra Visual C++ 2010 Runtimes solo funcionan en Windows XP SP2 y más adelante. La versión RTM (16.00.30319) también está disponible en Windows SDK para Windows 7 y. NET Framework 4 (WinSDK v7.1). SP1 versión (16.00.40219) está disponible como parte de Visual Studio 2010 Service Pack 1 o a través de Microsoft Visual C++ 2010 Service Pack 1 Compiler Update para Windows SDK 7.1.
- Visual C++ 2012 (también conocido como Visual C++ 11.0) fue lanzado el 15 de agosto de 2012. Cuenta con un mejor soporte C+11 y soporte para el desarrollo de Windows Runtime.
- Visual C++ 2013 (también conocido como Visual C++ 12.0) fue lanzado el 17 de octubre de 2013. Cuenta con más soporte C+11 y C99, e introduce un SDK REST.
- Visual C++ 2015 (también conocido como Visual C++ 14.0) fue lanzado el 20 de julio de 2015. Cuenta con mejor apoyo C++11/14/17. Sin ningún anuncio de Microsoft, Visual Studio 2015 Update 2 comenzó a generar llamadas de telemetría en binarios compilados. Después de que algunos usuarios se pusieron en contacto con Microsoft acerca de este problema, Microsoft dijo que eliminarían estas llamadas de telemetría al compilarse con el futuro Visual Studio 2015 Update 3. La función en cuestión fue eliminada de las bibliotecas estáticas Visual C++ CRT en Visual Studio 2015 Update 3.
- Visual C++ 2017 (también conocido como Visual C++ 14.1) fue lanzado el 7 de marzo de 2017.
- Visual C++ 2019 (también conocido como Visual C++ 14.20) fue lanzado el 2 de abril de 2019.
- Visual C++ 2022 (también conocido como Visual C++ 14.30) fue lanzado el 8 de noviembre de 2021.
Numeración de versión interna
Hay varios números de versión diferentes a tener en cuenta al trabajar con Visual C o C++. El más antiguo y original de estos es el número de versión del compilador, que se ha incrementado monótonamente desde los primeros días del compilador Microsoft C. Esta es la versión devuelta al ejecutar el comando cl.exe
solo sin ninguna opción. Al tomar dos dígitos después del decimal y quitar el punto decimal, esto también se convierte en el valor de la macro del preprocesador C: _MSC_VER
, y la variable CMake: MSVC_VERSION
. Una versión más larga de la macro C es _MSC_FULL_VER
para hacer distinciones más detalladas entre las compilaciones del compilador. Un ejemplo de _MSC_VER
es '1933' para representar la versión 19.33 del compilador Microsoft C/C++, y de _MSC_FULL_VER
es '193331630'. Debe usar el operador >=
para probar el valor de _MSC_VER
o _MSC_FULL_VER
en lugar de igualdad.
La versión del producto Visual, como '17.3.4', designa la versión de Visual Studio con la que se empaquetó la versión 19.33 del compilador. Luego está la versión de la biblioteca en tiempo de ejecución de Microsoft Visual C/C++, p. '14.3'. A partir de esto, también se puede deducir la versión del conjunto de herramientas, que se puede obtener tomando los primeros tres dígitos de la versión de la biblioteca en tiempo de ejecución y quitando el decimal, p. '143'. Incluye la biblioteca de tiempo de ejecución de Visual C/C++, así como compiladores, enlazadores, ensambladores, otras herramientas de compilación y bibliotecas coincidentes y archivos de encabezado. La siguiente es una tabla (raspable) de los números de versión correlacionados conocidos.
nombre del producto | producto Versión | Año de comercialización | _MSC_VER | _MSC_FULL_VER | versión de la biblioteca de tiempo de ejecución |
---|---|---|---|---|---|
Microsoft C 6.0 | 600 | ||||
Microsoft C/C++ 7.0 | 700 | ||||
Visual C++ 1.0 | 1.0 | 800 | 1 | ||
Visual C++ 2.0 | 2.0 | 900 | 2 | ||
Visual C++ 4.0 | 4.0 | 1000 | 4 | ||
Visual C++ 4.1 | 4.1 | Graben 19, 1010 | 4.1 | ||
Visual C++ 4.2 | 4.2 | 1020 | 4.2 | ||
Visual Studio 97 [5.0] | 5.0 | 97 | 1100 | 5 | |
Visual Studio 6.0 SP5 | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio 6.0 SP6 | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio.NET 2002 [7.0] | 7.0 | 2002 | 1300 | 13009466 | 7 |
Visual Studio.NET 2003 Beta [7.1] | 7.1 | 2003 | 1310 | 13102292 | 7.1 |
Visual Studio Toolkit 2003 [7.1] | 7.1 | 2003 | 1310 | 13103052 | 7.1 |
Visual Studio.NET 2003 [7.1] | 7.1 | 2003 | 1310 | 13103077 | 7.1 |
Visual Studio.NET 2003 SP1 [7.1] | 7.1 | 2003 | 1310 | 13106030 | 7.1 |
Visual Studio 2005 Beta 1 [8.0] | 8.0 | 2005 | 1400 | 140040607 | 8 |
Visual Studio 2005 Beta 2 [8.0] | 8.0 | 2005 | 1400 | 140050215 | 8 |
Visual Studio 2005 [8.0] | 8.0 | 2005 | 1400 | 140050320 | 8 |
Visual Studio 2005 SP1 [8.0] | 8.0 | 2005 | 1400 | 140050727 | 8 |
Visual Studio 2008 Beta 2 [9.0] | 8.0 | 2008 | 1500 | 150020706 | 9 |
Visual Studio 2008 [9.0] | 9.0 | 2010 | 1500 | 150021022 | 9 |
Visual Studio 2008 SP1 [9.0] | 9.0 | 2010 | 1500 | 150030729 | 9 |
Visual Studio 2010 Beta 1 [10.0] | 10.0 | 2010 | 1600 | 160020506 | 10 |
Visual Studio 2010 Beta 2 [10.0] | 10.0 | 2010 | 1600 | 160021003 | 10 |
Visual Studio 2010 [10.0] | 10.0 | 2010 | 1600 | 160030319 | 10 |
Visual Studio 2010 SP1 [10.0] | 10.0 | 2010 | 1600 | 160040219 | 10 |
Visual Studio 2012 [11.0] | 11.0 | 2012 | 1700 | 170050727 | 11 |
Visual Studio 2012 Update 1 [11.0] | 11.0 | 2012 | 1700 | 170051106 | 11 |
Visual Studio 2012 Update 2 [11.0] | 11.0 | 2012 | 1700 | 170060315 | 11 |
Visual Studio 2012 Update 3 [11.0] | 11.0 | 2012 | 1700 | 170060610 | 11 |
Visual Studio 2012 Update 4 [11.0] | 11.0 | 2012 | 1700 | 170061030 | 11 |
Visual Studio 2012 November CTP [11.0] | 11.0 | 2012 | 1700 | 170051025 | 11 |
Visual Studio 2013 Preview [12.0] | 12.0 | 2013 | 1800 | 180020617 | 12 |
Visual Studio 2013 RC [12.0] | 12.0 | 2013 | 1800 | 180020827 | 12 |
Visual Studio 2013 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013 Update 1 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013 Update2 RC [12.0] | 12.0 | 2013 | 1800 | 18003030324 | 12 |
Visual Studio 2013 Update 2 [12.0] | 12.0 | 2013 | 1800 | 180030501 | 12 |
Visual Studio 2013 Update 3 [12.0] | 12.0 | 2013 | 1800 | 180030723 | 12 |
Visual Studio 2013 Update 4 [12.0] | 12.0 | 2013 | 1800 | 180031101 | 12 |
Visual Studio 2013 Update 5 [12.0] | 12.0 | 2013 | 1800 | 180040629 | 12 |
Visual Studio 2013 November CTP [12.0] | 12.0 | 2013 | 1800 | 180021114 | 12 |
Visual Studio 2015 [14.0] | 14.0 | 2015 | 1900 | 190023026 | 14 |
Visual Studio 2015 Update 1 [14.0] | 14.0 | 2015 | 1900 | 190023506 | 14 |
Visual Studio 2015 Update 2 [14.0] | 14.0 | 2015 | 1900 | 190023918 | 14 |
Visual Studio 2015 Update 3 [14.0] | 14.0 | 2015 | 1900 | 190024210 | 14 |
Visual Studio 2017 versión 15.0 | 15.0 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 versión 15.1 | 15.1 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 versión 15.2 | 15.2 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 versión 15.3.3 | 15.3.3 | 2017 | 1911 | 191125507 | 14.11 |
Visual Studio 2017 versión 15.4.4 | 15.4.4 | 2017 | 1911 | 191125542 | 14.11 |
Visual Studio 2017 versión 15.4.5 | 15.4.5 | 2017 | 1911 | 191125547 | 14.11 |
Visual Studio 2017 versión 15.5.2 | 15.5.2 | 2017 | 1912 | 191225831 | 14.12 |
Visual Studio 2017 versión 15.5.3 | 15.5.3 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 versión 15.5.4 | 15.5.4 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 versión 15.5.6 | 15.5.6 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 versión 15.5.7 | 15.5.7 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 versión 15.6.0 | 15.6.0 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 versión 15.6.1 | 15.6.1 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 versión 15.6.2 | 15.6.2 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 versión 15.6.3 | 15.6.3 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 versión 15.6.4 | 15.6.4 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 versión 15.6.6 | 15.6.6 | 2017 | 1913 | 191326131 | 14.13 |
Visual Studio 2017 versión 15.6.7 | 15.6.7 | 2017 | 1913 | 191326132 | 14.13 |
Visual Studio 2017 versión 15.7.1 | 15.7.1 | 2017 | 1914 | 191426428 | 14.14 |
Visual Studio 2017 versión 15.7.2 | 15.7.2 | 2017 | 1914 | 191426429 | 14.14 |
Visual Studio 2017 versión 15.7.3 | 15.7.3 | 2017 | 1914 | 191426430 | 14.14 |
Visual Studio 2017 versión 15.7.5 | 15.7.5 | 2017 | 1914 | 191426433 | 14.14 |
Visual Studio 2017 versión 15.9.1 | 15.9.1 | 2017 | 1916 | 191627023 | 14.16 |
Visual Studio 2017 versión 15.9.4 | 15.9.4 | 2017 | 1916 | 191627025 | 14.16 |
Visual Studio 2017 versión 15.9.5 | 15.9.5 | 2017 | 1916 | 191627026 | 14.16 |
Visual Studio 2017 versión 15.9.7 | 15.9.7 | 2017 | 1916 | 191627027 | 14.16 |
Visual Studio 2017 versión 15.9.11 | 15.9.11 | 2017 | 1916 | 191627030 | 14.16 |
Visual Studio 2019 versión 16.0.0 | 16.0.0 | 2019 | 1920 | 192027508 | 14.20 |
Visual Studio 2019 versión 16.1.2 | 16.1.2 | 2019 | 1921 | 192127702 | 14.21 |
Visual Studio 2019 versión 16.2.3 | 16.2.3 | 2019 | 1922 | 192227905 | 14.21 |
Visual Studio 2019 versión 16.3.2 | 16.3.2 | 2019 | 1923 | 192328105 | 14.21 |
Visual Studio 2019 versión 16.4.0 | 16.4.0 | 2019 | 1924 | 192428314 | 14.24 |
Visual Studio 2019 versión 16.5.1 | 16.5.1 | 2019 | 1925 | 192528611 | 14.25 |
Visual Studio 2019 versión 16.6.2 | 16.6.2 | 2019 | 1926 | 192628806 | 14.26 |
Visual Studio 2019 versión 16.7 | 16,7 | 2019 | 1927 | 192729112 | 14.27 |
Visual Studio 2019 versión 16.8.1 | 16.8.1 | 2019 | 1928 | 192829333 | 14.28 |
Visual Studio 2019 versión 16.8.2 | 16.8.2 | 2019 | 1928 | 192829334 | 14.28 |
Visual Studio 2019 versión 16.9.2 | 16.9.2 | 2019 | 1928 | 192829913 | 14.28 |
Visual Studio 2019 versión 16.11.2 | 16.11.2 | 2019 | 1929 | 192930133 | 14.29 |
Visual Studio 2019 versión 16.11.24 | 16.11.24 | 2019 | 1929 | 192930148 | 14.29 |
Visual Studio 2022 versión 17.0.1 | 17.0.1 | 2022 | 1930 | 193030705 | 14.30 |
Visual Studio 2022 versión 17.0.2 | 17.0.2 | 2022 | 1930 | 193030706 | 14.31 |
Visual Studio 2022 versión 17.2.2 | 17.2.2 | 2022 | 1932 | 193231329 | 14.32 |
Visual Studio 2022 versión 17.3.4 | 17.3.4 | 2022 | 1933 | 193331630 | 14.33 |
La fuente de esta tabla es.
Compatibilidad
ABI
La ABI del compilador de Visual C++ históricamente ha cambiado entre las principales versiones del compilador. Este es especialmente el caso de los contenedores STL, donde los tamaños de los contenedores han variado mucho entre las versiones del compilador. Por lo tanto, Microsoft recomienda no usar interfaces de C++ en los límites del módulo cuando se desea habilitar el código de cliente compilado con una versión de compilador diferente. En lugar de C++, Microsoft recomienda usar interfaces C o COM, que están diseñadas para tener una ABI estable entre las versiones del compilador.
Todas las versiones 14.x de MSVC tienen una ABI estable y los archivos binarios creados con estas versiones se pueden mezclar de forma compatible con versiones posteriores, teniendo en cuenta las siguientes restricciones:
- La versión toolet utilizada debe ser igual o superior a la versión más alta utilizada para construir cualquier binario vinculado.
- El MSVC La versión redistributable debe ser igual o superior a la versión de herramientas utilizada por cualquier componente de aplicación.
- Las bibliotecas estáticas o los ficheros de objetos compilados con /GL (Personalización del programa) no son compatibles binariamente entre versiones y deben usar el mismo conjunto de herramientas.
Bibliotecas de tiempo de ejecución de C
Visual C++ se envía con diferentes versiones de bibliotecas de tiempo de ejecución de C. Esto significa que los usuarios pueden compilar su código con cualquiera de las bibliotecas disponibles. Sin embargo, esto puede causar algunos problemas al usar diferentes componentes (DLL, EXE) en el mismo programa. Un ejemplo típico es un programa que utiliza diferentes bibliotecas. El usuario debe usar el mismo C Run-Time para todos los componentes del programa, a menos que comprenda las implicaciones. Microsoft recomienda utilizar la biblioteca de vínculos dinámicos multiproceso (opción de compilador /MD o /MDd) para evitar posibles problemas.
POSIX
Aunque Microsoft's CRT implementa un gran subconjunto de interfaces POSIX, el compilador de Visual C++ emitirá una advertencia en cada uso de dichas funciones de forma predeterminada. La razón es que los estándares C y C++ requieren un prefijo de subrayado antes de las interfaces definidas por la implementación, por lo que el uso de estas funciones no es estándar. Sin embargo, los sistemas que en realidad son compatibles con POSIX no aceptarían estos nombres subrayados, y es más portátil desactivar la advertencia en su lugar.
C
Aunque el producto se originó como un IDE para el lenguaje de programación C, durante muchos años la compatibilidad del compilador con ese lenguaje se ajustaba únicamente a la edición original del estándar C, que data de 1989, pero no a la revisión C99 de el estandar. No había planes para apoyar C99 incluso en 2011, más de una década después de su publicación.
Visual C++ 2013 finalmente agregó soporte para varias funciones de C99 en su modo C (incluidos inicializadores designados, literales compuestos y el tipo _Bool
), aunque aún no estaba completo. Visual C++ 2015 mejoró aún más la compatibilidad con C99, con compatibilidad total con la biblioteca estándar de C99, excepto las funciones que requieren funciones del lenguaje C99 que aún no son compatibles con el compilador.
La mayoría de los cambios de la revisión C11 del estándar todavía no son compatibles con Visual C++ 2017. Por ejemplo, las selecciones genéricas a través de la palabra clave _Generic
no son compatibles con el compilador y dan como resultado una sintaxis error.
El preprocesador se revisó en 2018, con C11 a la vista:
El soporteLa conformidad completa C11 está en nuestra hoja de ruta, y la actualización del preprocesador es sólo el primer paso en ese proceso. El C11
_Generic
característica no es en realidad parte del preprocesador, por lo que aún no se ha implementado. Cuando se implementa espero que la característica funcione independientemente de si se utiliza la lógica preprocesador tradicional o actualizada.
_Generic
se comprometió con MSVC a partir de febrero de 2020, no está claro cuándo se enviará.
En septiembre de 2020, Microsoft anunció la compatibilidad con los estándares C11 y C17 en MSVC.
C++
Con la configuración predeterminada, MSVC no realiza búsquedas de nombres en dos fases, lo que evita que marque una amplia variedad de códigos no válidos. La mayoría de las comprobaciones se difieren a la instanciación de la plantilla. Las versiones más recientes solucionan este comportamiento, pero debe habilitarse mediante la opción de línea de comandos /permissive-
.
Contenido relacionado
Boeing C-17 Globemaster III
Péndulo de foucault
Procesador de texto