Microsoft Visual С++
![]() | |
Разработчик(и) | Майкрософт |
---|---|
Первоначальный выпуск | февраль 1993 г [ 1 ] |
Стабильная версия | 14.40.33810
|
Написано в | С++ [ 2 ] |
Операционная система | Окна |
Платформа | IA-32 , x86-64 и ARM |
Доступно в | Английский, китайский (упрощенный и традиционный), чешский, французский, немецкий, итальянский, японский, корейский, польский, португальский (бразильский), русский, испанский, турецкий |
Тип | Компилятор |
Лицензия | Пробное и бесплатное ПО |
Веб-сайт | документы |
Microsoft Visual C++ ( MSVC ) — компилятор C , C++ , C++/CLI и C++/CX языков программирования от Microsoft . MSVC является проприетарным программным обеспечением ; Первоначально это был отдельный продукт, но позже он стал частью Visual Studio и стал доступен как в пробной, так и в бесплатной форме. Он содержит инструменты для разработки и отладки кода C++, особенно кода, написанного для Windows API , DirectX и .NET .
Для правильной работы многих приложений требуются распространяемые пакеты библиотеки времени выполнения Visual C++. Эти пакеты часто устанавливаются отдельно от поддерживаемых ими приложений, что позволяет нескольким приложениям использовать пакет при одной установке. Эти распространяемые пакеты Visual C++ и пакеты среды выполнения в основном устанавливаются для стандартных библиотек , которые используют многие приложения. [ 3 ]
История
[ редактировать ]Предшественник Visual C++ назывался Microsoft C/C++ . Также существовали Microsoft QuickC 2.5 и Microsoft QuickC для Windows 1.0. Visual C++ Компилятор по-прежнему известен как Microsoft C/C++ и на момент выпуска Visual C++ 2015 Update 2 имеет версию 14.0.23918.0. [ нужна ссылка ]
16-битные версии
[ редактировать ]- Microsoft C 1.0, основанный на Lattice C , был первым продуктом Microsoft на языке C, выпущенным в 1983 году. Он не K&R C. соответствовал требованиям
- В C 2.0 добавлена поддержка больших моделей, позволяющая использовать до 1 МБ как для сегмента кода, так и для сегмента данных. [ 4 ]
- C 3.0 был первой версией, разработанной внутри Microsoft. [ 5 ] Эта версия предполагала совместимость с K&R и более поздним стандартом ANSI. Он использовался внутри Microsoft (для разработки Windows и Xenix ) в начале 1984 года. В качестве продукта он был выпущен в 1985 году.
- В C 4.0 добавлены оптимизации и CodeView , отладчик уровня исходного кода.
- В C 5.0 добавлена оптимизация циклов и поддержка модели огромной памяти ( массивы размером более 64 КБ).
- C 5.1, выпущенный в 1988 году, позволял компилировать программы для OS/2 1.x. Версия с четырнадцатью 5,25-дюймовыми дисками (два из которых были 1,2 МБ, остальные 360 КБ) включали QuickC. Версия с одиннадцатью 720 тыс. 3,5-дюймовых дисков, входившая в комплект разработки программного обеспечения OS / 2, включала MASM 5.1 (один исполняемый файл, который работал как под MSDOS, так и под MSDOS и ОС/2 1.x).
- В C 6.0, выпущенном в 1989 году, добавлена поддержка модели крошечной памяти и улучшена поддержка стандарта ANSI C89 (в документации прямо сказано, что он не соответствует на 100%, но кажется достаточно близким для практических целей). В него добавлена среда разработки Programmer's Workbench , глобальный анализ потока, браузер исходного кода и новый отладчик. К удивлению многих, C++ не был включен, хотя у конкурентов уже были предложения. [ 6 ]
- C/C++ 7.0 был выпущен в 1992 году. Поддержка OS/2 прекращена. Для компиляции требовался процессор 386 плюс входящий в комплект DOS 386MAX расширитель . [ 7 ] хотя для того, чтобы пользователи могли использовать расширители DOS в своих собственных программах, требовался один из нескольких выпущенных позже сторонних инструментов. [ 8 ] Добавлена встроенная поддержка C++ и MFC (библиотека классов Microsoft Foundation) 1.0. [ 9 ]
- Visual C++ 1.0, включавший MFC 2.0, был первой версией Visual C++, выпущенной в феврале 1993 года. Она была Cfront 2.1. совместима с [ 10 ] и доступен в двух редакциях: [ 1 ]
- Стандарт: заменен QuickC для Windows.
- Professional: заменен C/C++ 7.0. Включена возможность сборки приложений как для DOS, так и для Windows, оптимизирующий компилятор , профилировщик исходного кода и Windows 3.1 SDK. [ 10 ] Lite . Также был включен Phar Lap 286 DOS Extender [ 11 ]
- Visual C++ 1.5 был выпущен в декабре 1993 года и включал MFC 2.5, а также добавил OLE 2.0 и ODBC в MFC. поддержку [ 12 ] Это была первая версия Visual C++, выпускавшаяся только на компакт-диске .
- Visual C++ 1.51 и 1.52 были доступны как часть службы подписки.
- Visual C++ 1.52b аналогичен версии 1.52, но не включает Control Development Kit.
- Visual C++ 1.52c был исправленной версией 1.5. Это последняя и, возможно, самая популярная платформа разработки для Microsoft Windows 3.x. Он доступен через Microsoft Developer Network .
Строго 32-битные версии
[ редактировать ]- Visual C++ 1.0 (исходное название: Visual C++ 32-bit Edition), выпущенный в 1993 году, был первой версией 32-битной разработки для архитектуры Intel 386 . [ 13 ] Хотя он был выпущен, когда была доступна 16-битная версия 1.5, она не включала поддержку OLE2 и ODBC. Он также был доступен в пакете под названием Visual C++ 16/32-bit Suite, который включал Visual C++ 1.5. [ 14 ]
- Visual C++ 2.0, включавший MFC 3.0, был первой только 32-разрядной версией. Во многом эта версия опередила свое время, поскольку Windows 95 под кодовым названием «Чикаго» еще не была выпущена, а Windows NT имела лишь небольшую долю рынка. Microsoft включила и обновила Visual C++ 1.5 в состав выпусков 2.x до версии 2.1, которая включала Visual C++ 1.52, а также были включены как 16-битная, так и 32-битная версия Control Development Kit (CDK). Visual C++ 2.x также поддерживает Win32 разработку . Он доступен через Microsoft Developer Network . Существовала версия Visual C++ 2.0 RISC для процессоров MIPS и Alpha , а также кроссплатформенная версия для Macintosh ( набор инструкций 68000 ). [ 15 ]
- Microsoft Visual C++ Cross-Development Edition для Macintosh — надстройка для Visual C++, в которой появилась библиотека переносимости Windows, первоначально известная как библиотека Windows для Macintosh. [ 16 ] : 17 или Windows Layer для Macintosh (WLM), [ 17 ] : 16 позволяя разработчикам писать приложения с использованием API-интерфейсов Win32 и MFC, которые можно скомпилировать для компьютеров Macintosh с архитектурой 68000. [ 16 ]
- Visual C++ 2.1 и 2.2 были обновлениями для версии 2.0, доступными по подписке.
- Visual C++ 4.0, выпущенный 11 декабря 1995 г., [ 18 ] представила среду разработки Developer Studio. Его новаторская на тот момент мозаичная компоновка непересекающихся панелей — панель навигации, комбинированная панель редактора/отладчика уровня исходного кода и панель вывода консоли. [ 19 ] - продолжается в линейке продуктов Visual Studio (по состоянию на 2013 г.). Visual C++ 4.0 включал MFC 4.0 и был разработан для Windows 95 и Windows NT. Чтобы обеспечить поддержку устаревших проектов (Windows 3.x/DOS), версия 4.0 поставлялась в комплекте с установочным компакт-диском Visual C++ 1.52. Обновления, доступные по подписке, включали Visual C++ 4.1, поставляемый с Microsoft Game SDK (позже выпущенный отдельно как DirectX SDK), и Visual C++ 4.2. Номер версии 3.0 был пропущен, чтобы обеспечить равенство номеров версий между Visual C++ 4.0 и MFC 4.0. [ 20 ]
- Visual C++ 4.2 не поддерживал разработку для Windows 3.x ( Win32s ). [ 21 ] Это была финальная версия с доступной кроссплатформенной версией для Mac , и она отличалась от версии 2.x тем, что также допускала компиляцию для набора инструкций PowerPC .
- Visual C++ 5.0 (в комплекте с Visual Studio 97), включающий MFC 4.21 и выпущенный 28 апреля 1997 г., [ 18 ] было серьезным обновлением с версии 4.2. [ 22 ] Доступно в четырех редакциях: Обучение, [ 23 ] Профессиональный, [ 24 ] Предприятие, [ 25 ] и РИСК. [ 26 ]
- Visual C++ 6.0 (широко известный как VC6 и доступный отдельно в редакциях Standard, Professional и Enterprise, а также в комплекте с Visual Studio 6.0), который включал MFC 6.0, был выпущен в 1998 году. [ 27 ] [ 28 ] Релиз вызвал несколько споров, поскольку не включал ожидаемого обновления MFC. Visual C++ 6.0 по-прежнему довольно популярен и часто используется для поддержки устаревших проектов. Однако есть проблемы с этой версией в Windows XP, особенно в режиме отладки (например, не отображаются значения статических переменных). Проблемы отладки можно решить с помощью патча под названием «Пакет процессора Visual C++ 6.0». [ 29 ] Номер версии: 12.00.8804
- Visual C++ .NET 2002 (также известный как Visual C++ 7.0), который включал MFC 7.0, был выпущен в 2002 году с поддержкой генерации кода времени компоновки и отладки проверок времени выполнения, .NET 1.0, а также Visual C# и Managed C++ . В новом пользовательском интерфейсе использовались многие горячие клавиши и соглашения Visual Basic , что в некоторой степени объясняло его непопулярность среди разработчиков C++. [ нужна ссылка ] Номер версии: 13.00.9466.
- Visual C++ .NET 2003 (также известный как Visual C++ 7.1), включавший MFC 7.1, был выпущен в 2003 году вместе с .NET 1.1 и представлял собой серьезное обновление Visual C++ .NET 2002, а также первую версию, поддерживающую C99. конструкция «длинный-длинный». Он считался исправлением для Visual C++ .NET 2002. Соответственно, англоязычная обновленная версия Visual Studio .NET 2003 поставлялась за минимальную цену владельцам англоязычной версии Visual Studio .NET 2002. Windows 98 официально является самой низкой версией. поддерживаемая версия. Хотя простые программы будут работать в Windows 95 и NT 4.0, более сложные программы могут вызывать ссылки на такие вещи, как ws2_32.dll, или функции, отсутствующие в kernel32.dll. В более поздних версиях (Visual C++ 2005) компилятора даже простые программы не будут работать (если вы не замените библиотеку C), поскольку в них есть ссылка на функцию IsDebuggerPresent в kernel32.dll, которая существует только в Windows 98 и более поздних версиях. [ нужна ссылка ] Номер версии: 13.10.3077.
- Встроенный Visual C++ [ 30 ] в различных версиях использовался для разработки некоторых версий операционной системы Windows CE . Первоначально он заменил среду разработки, состоящую из инструментов, добавленных в Visual C++ 6.0. eMbedded Visual C++ был заменен как отдельная среда разработки Microsoft Visual Studio 2005 .
32-битные и 64-битные версии
[ редактировать ]- Visual C++ 2005 (также известный как Visual C++ 8.0), включающий MFC 8.0, был выпущен в ноябре 2005 года. Эта версия поддерживает .NET 2.0 и включает новую версию C++, предназначенную для платформы .NET ( C++/CLI ), с целью замены предыдущей версии ( Managed C++ ). Однако управляемый C++ для CLI по-прежнему доступен через параметры компилятора. Он также представил OpenMP . В Visual C++ 2005 компания Microsoft также представила Team Foundation Server . В Visual C++ 8.0 возникают проблемы с компиляцией проектов MFC AppWizard, созданных с помощью Visual Studio 6.0, поэтому обслуживание устаревших проектов можно продолжить с использованием исходной интегрированной среды разработки, если перезапись невозможна. Visual C++ 2005 — последняя версия, предназначенная для Windows 98 и Windows Me . [ 31 ] [ 32 ] Версия SP1 (14.00.50727.762) также доступна в обновлении Microsoft Windows SDK для Windows Vista .
- Visual C++ 2008 (также известный как Visual C++ 9.0) был выпущен в ноябре 2007 года. Эта версия поддерживает .NET 3.5. Управляемый C++ для CLI по-прежнему доступен через параметры компилятора. По умолчанию все приложения, скомпилированные с использованием среды выполнения Visual C++ 2008 (статическое и динамическое связывание), будут работать только в Windows 2000, Windows XP SP2 и более поздних версиях. [ 33 ] [ 34 ] Пакет функций, выпущенный для VC9, позже включенный в SP1, добавил поддержку расширений библиотеки C++ TR1 . Версия SP1 (15.00.30729.01) также доступна в Microsoft Windows SDK для Windows 7 .
- Некоторые версии Visual C++ поддерживали Itanium 2 .
- Visual C++ 2010 (также известный как Visual C++ 10.0) был выпущен 12 апреля 2010 года. Он использует базу данных SQL Server Compact для хранения информации об исходном коде, включая информацию IntelliSense , для улучшения поддержки IntelliSense и автодополнения кода. [ 35 ] Однако Visual C++ 2010 не поддерживает Intellisense для C++/CLI. [ 36 ] C++ В этой версии добавлена библиотека параллельных вычислений под названием Parallel Patterns Library , частичная поддержка C++11 , значительно улучшена технология IntelliSense на основе Edison Design Group . интерфейса [ 37 ] и улучшения производительности как компилятора, так и сгенерированного кода. [ 38 ] Эта версия построена на .NET 4.0, но поддерживает компиляцию в машинный код . Частичная поддержка C++11 в основном состоит из шести функций компилятора: [ 39 ] лямбды, ссылки rvalue, auto, decltype, static_assert и nullptr. C++11 также поддерживает функции библиотеки (например, перемещение компонентов TR1 из пространства имен std::tr1 непосредственно в пространство имен std). Шаблоны с переменным числом вариантов также рассматривались, но были отложены до какой-либо будущей версии из-за более низкого приоритета, который был связан с тем фактом, что, в отличие от других дорогостоящих в реализации функций (лямбда, ссылки на rvalue), шаблоны с переменным числом значений принесли бы пользу только меньшинству библиотек. писатели, а не большинство конечных пользователей компиляторов. [ 40 ] По умолчанию все приложения, скомпилированные с использованием среды выполнения Visual C++ 2010, работают только в Windows XP SP2 и более поздних версиях. Версия RTM (16.00.30319) также доступна в Windows SDK для Windows 7 и .NET Framework 4 (WinSDK v7.1). [ 41 ] Версия SP1 (16.00.40219) доступна как часть пакета обновления 1 для Visual Studio 2010 или через обновление компилятора Microsoft Visual C++ 2010 с пакетом обновления 1 для Windows SDK 7.1. [ 42 ]
- Visual C++ 2012 (также известный как Visual C++ 11.0) был выпущен 15 августа 2012 года. Он отличается улучшенной поддержкой C++11 и поддержкой разработки среды выполнения Windows . [ 43 ]
- Visual C++ 2013 (также известный как Visual C++ 12.0) был выпущен 17 октября 2013 года. Он обеспечивает дополнительную поддержку C++11 и C99 , а также представляет REST SDK. [ 44 ]
- Visual C++ 2015 (также известный как Visual C++ 14.0) был выпущен 20 июля 2015 года. [ 45 ] Он имеет улучшенную поддержку C++ 11/14/17. [ 46 ] Без какого-либо объявления от Microsoft Visual Studio 2015 Update 2 начала генерировать вызовы телеметрии в скомпилированных двоичных файлах. После того, как некоторые пользователи обратились в Microsoft по поводу этой проблемы, Microsoft заявила, что удалит эти вызовы телеметрии при компиляции с будущим обновлением 3 для Visual Studio 2015. [ 47 ] [ 48 ] Рассматриваемая функция была удалена из статических библиотек Visual C++ CRT в Visual Studio 2015 Update 3. [ нужна ссылка ]
- Visual C++ 2017 (также известный как Visual C++ 14.1) был выпущен 7 марта 2017 года. [ 49 ]
- Visual C++ 2019 (также известный как Visual C++ 14.20) был выпущен 2 апреля 2019 года. [ 50 ]
- Visual C++ 2022 (также известный как Visual C++ 14.30) был выпущен 8 ноября 2021 года. [ 51 ]
Внутренняя нумерация версий
[ редактировать ]При работе с Visual C или C++ следует учитывать несколько разных номеров версий. Самым старым и оригинальным из них является номер версии компилятора, который монотонно увеличивался со времен первых дней компилятора Microsoft C. Это версия, возвращаемая запуском команды cl.exe
самостоятельно, без каких-либо вариантов. Если взять две цифры после запятой и отбросить десятичную точку, это также станет значением макроса препроцессора C: _MSC_VER
и переменная CMake: MSVC_VERSION
. Более длинная версия макроса C: _MSC_FULL_VER
чтобы сделать более детальные различия между сборками компилятора. Пример _MSC_VER
«1933» означает версию 19.33 компилятора Microsoft C/C++ и _MSC_FULL_VER
это «193331630». Вам следует использовать >=
оператор для проверки значения _MSC_VER
или _MSC_FULL_VER
вместо равенства.
Версия продукта Visual, например «17.3.4», обозначает версию Visual Studio, с которой была упакована версия 19.33 компилятора. Также есть версия библиотеки времени выполнения Microsoft Visual C/C++, например «14.3». Отсюда также можно вывести версию набора инструментов, которую можно получить, взяв первые три цифры версии библиотеки времени выполнения и отбросив десятичную дробь, например «143». Он включает в себя библиотеку времени выполнения Visual C/C++, а также компиляторы, компоновщики, ассемблеры, другие инструменты сборки, а также соответствующие библиотеки и файлы заголовков. Ниже приводится (очищаемая) таблица известных коррелирующих номеров версий.
название продукта | ВК (код версии) | маркетинговый год | _MSC_VER | _MSC_FULL_VER | версия библиотеки времени выполнения |
---|---|---|---|---|---|
Майкрософт С 6.0 | 600 | ||||
Microsoft Си/С++ 7.0 | 700 | ||||
Визуальный С++ 1.0 | 1.0 | 800 | 1 | ||
Визуал С++ 2.0 | 2.0 | 900 | 2 | ||
Визуал С++ 4.0 | 4.0 | 1000 | 4 | ||
Визуал С++ 4.1 | 4.1 | 1010 | 4.1 | ||
Визуал С++ 4.2 | 4.2 | 1020 | 4.2 | ||
Визуальная Студия 97 [5.0] | 5.0 | 97 | 1100 | 5 | |
Visual Studio 6.0 с пакетом обновления 5 (SP5) | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio 6.0 с пакетом обновления 6 (SP6) | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio .NET 2002 [7.0] | 7.0 | 2002 | 1300 | 13009466 | 7 |
Бета-версия Visual Studio .NET 2003 [7.1] | 7.1 | 2003 | 1310 | 13102292 | 7.1 |
Набор инструментов Visual Studio 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 с пакетом обновления 1 [7.1] | 7.1 | 2003 | 1310 | 13106030 | 7.1 |
Visual Studio 2005, бета-версия 1 [8.0] | 8.0 | 2005 | 1400 | 140040607 | 8 |
Visual Studio 2005 бета 2 [8.0] | 8.0 | 2005 | 1400 | 140050215 | 8 |
Визуальная Студия 2005 [8.0] | 8.0 | 2005 | 1400 | 140050320 | 8 |
Visual Studio 2005 с пакетом обновления 1 [8.0] | 8.0 | 2005 | 1400 | 140050727 | 8 |
Visual Studio 2008 бета 2 [9.0] | 8.0 | 2008 | 1500 | 150020706 | 9 |
Визуальная Студия 2008 [9.0] | 9.0 | 2010 | 1500 | 150021022 | 9 |
Visual Studio 2008 с пакетом обновления 1 [9.0] | 9.0 | 2010 | 1500 | 150030729 | 9 |
Visual Studio 2010, бета-версия 1 [10.0] | 10.0 | 2010 | 1600 | 160020506 | 10 |
Visual Studio 2010, бета-версия 2 [10.0] | 10.0 | 2010 | 1600 | 160021003 | 10 |
Визуальная Студия 2010 [10.0] | 10.0 | 2010 | 1600 | 160030319 | 10 |
Visual Studio 2010 с пакетом обновления 1 [10.0] | 10.0 | 2010 | 1600 | 160040219 | 10 |
Визуальная Студия 2012 [11.0] | 11.0 | 2012 | 1700 | 170050727 | 11 |
Visual Studio 2012, обновление 1 [11.0] | 11.0 | 2012 | 1700 | 170051106 | 11 |
Visual Studio 2012, обновление 2 [11.0] | 11.0 | 2012 | 1700 | 170060315 | 11 |
Visual Studio 2012, обновление 3 [11.0] | 11.0 | 2012 | 1700 | 170060610 | 11 |
Visual Studio 2012, обновление 4 [11.0] | 11.0 | 2012 | 1700 | 170061030 | 11 |
CTP-версия Visual Studio 2012, ноябрь [11.0] | 11.0 | 2012 | 1700 | 170051025 | 11 |
Предварительная версия Visual Studio 2013 [12.0] | 12.0 | 2013 | 1800 | 180020617 | 12 |
Visual Studio 2013-кандидатская версия [12.0] | 12.0 | 2013 | 1800 | 180020827 | 12 |
Визуальная Студия 2013 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013, обновление 1 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013 Update2 RC [12.0] | 12.0 | 2013 | 1800 | 180030324 | 12 |
Visual Studio 2013, обновление 2 [12.0] | 12.0 | 2013 | 1800 | 180030501 | 12 |
Visual Studio 2013, обновление 3 [12.0] | 12.0 | 2013 | 1800 | 180030723 | 12 |
Visual Studio 2013, обновление 4 [12.0] | 12.0 | 2013 | 1800 | 180031101 | 12 |
Visual Studio 2013, обновление 5 [12.0] | 12.0 | 2013 | 1800 | 180040629 | 12 |
CTP-версия Visual Studio 2013, ноябрь [12.0] | 12.0 | 2013 | 1800 | 180021114 | 12 |
Визуальная Студия 2015 [14.0] | 14.0 | 2015 | 1900 | 190023026 | 14 |
Visual Studio 2015, обновление 1 [14.0] | 14.0 | 2015 | 1900 | 190023506 | 14 |
Visual Studio 2015, обновление 2 [14.0] | 14.0 | 2015 | 1900 | 190023918 | 14 |
Visual Studio 2015, обновление 3 [14.0] | 14.0 | 2015 | 1900 | 190024210 | 14 |
Visual Studio 2017 версии 15.0 | 15.0 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 версии 15.1 | 15.1 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 версии 15.2 | 15.2 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 версии 15.3.3 | 15.3.3 | 2017 | 1911 | 191125507 | 14.11 |
Visual Studio 2017 версии 15.4.4 | 15.4.4 | 2017 | 1911 | 191125542 | 14.11 |
Visual Studio 2017 версии 15.4.5 | 15.4.5 | 2017 | 1911 | 191125547 | 14.11 |
Visual Studio 2017 версии 15.5.2 | 15.5.2 | 2017 | 1912 | 191225831 | 14.12 |
Visual Studio 2017 версии 15.5.3 | 15.5.3 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 версии 15.5.4 | 15.5.4 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 версии 15.5.6 | 15.5.6 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 версии 15.5.7 | 15.5.7 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 версии 15.6.0 | 15.6.0 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 версии 15.6.1 | 15.6.1 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 версии 15.6.2 | 15.6.2 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 версии 15.6.3 | 15.6.3 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 версии 15.6.4 | 15.6.4 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 версии 15.6.6 | 15.6.6 | 2017 | 1913 | 191326131 | 14.13 |
Visual Studio 2017 версии 15.6.7 | 15.6.7 | 2017 | 1913 | 191326132 | 14.13 |
Visual Studio 2017 версии 15.7.1 | 15.7.1 | 2017 | 1914 | 191426428 | 14.14 |
Visual Studio 2017 версии 15.7.2 | 15.7.2 | 2017 | 1914 | 191426429 | 14.14 |
Visual Studio 2017 версии 15.7.3 | 15.7.3 | 2017 | 1914 | 191426430 | 14.14 |
Visual Studio 2017 версии 15.7.5 | 15.7.5 | 2017 | 1914 | 191426433 | 14.14 |
Visual Studio 2017 версии 15.9.1 | 15.9.1 | 2017 | 1916 | 191627023 | 14.16 |
Visual Studio 2017 версии 15.9.4 | 15.9.4 | 2017 | 1916 | 191627025 | 14.16 |
Visual Studio 2017 версии 15.9.5 | 15.9.5 | 2017 | 1916 | 191627026 | 14.16 |
Visual Studio 2017 версии 15.9.7 | 15.9.7 | 2017 | 1916 | 191627027 | 14.16 |
Visual Studio 2017 версии 15.9.11 | 15.9.11 | 2017 | 1916 | 191627030 | 14.16 |
Visual Studio 2019 версии 16.0.0 | 16.0.0 | 2019 | 1920 | 192027508 | 14.20 |
Visual Studio 2019 версии 16.1.2 | 16.1.2 | 2019 | 1921 | 192127702 | 14.21 |
Visual Studio 2019 версии 16.2.3 | 16.2.3 | 2019 | 1922 | 192227905 | 14.21 |
Visual Studio 2019 версии 16.3.2 | 16.3.2 | 2019 | 1923 | 192328105 | 14.21 |
Visual Studio 2019 версии 16.4.0 | 16.4.0 | 2019 | 1924 | 192428314 | 14.24 |
Visual Studio 2019 версии 16.5.1 | 16.5.1 | 2019 | 1925 | 192528611 | 14.25 |
Visual Studio 2019 версии 16.6.2 | 16.6.2 | 2019 | 1926 | 192628806 | 14.26 |
Visual Studio 2019 версии 16.7 | 16.7 | 2019 | 1927 | 192729112 | 14.27 |
Visual Studio 2019 версии 16.8.1 | 16.8.1 | 2019 | 1928 | 192829333 | 14.28 |
Visual Studio 2019 версии 16.8.2 | 16.8.2 | 2019 | 1928 | 192829334 | 14.28 |
Visual Studio 2019 версии 16.9.0 | 16.9.0 | 2019 | 1928 | 192829910 | 14.28 |
Visual Studio 2019 версии 16.9.2 | 16.9.2 | 2019 | 1928 | 192829913 | 14.28 |
Visual Studio 2019 версии 16.9.17 | 16.9.17 | 2019 | 1928 | 192829921 | 14.28 |
Visual Studio 2019 версии 16.9.18 | 16.9.18 | 2019 | 1928 | 192829921 | 14.28 |
Visual Studio 2019 версии 16.9.19 | 16.9.19 | 2019 | 1928 | 192829923 | 14.28 |
Visual Studio 2019 версии 16.11.2 | 16.11.2 | 2019 | 1929 | 192930133 | 14.29 |
Visual Studio 2019 версии 16.11.8 | 16.11.8 | 2019 | 1929 | 192930138 | 14.29 |
Visual Studio 2019 версии 16.11.9 | 16.11.9 | 2019 | 1929 | 192930139 | 14.29 |
Visual Studio 2019 версии 16.11.10 | 16.11.10 | 2019 | 1929 | 192930140 | 14.29 |
Visual Studio 2019 версия 16.11.11 | 16.11.11 | 2019 | 1929 | 192930141 | 14.29 |
Visual Studio 2019 версия 16.11.12 | 16.11.12 | 2019 | 1929 | 192930142 | 14.29 |
Visual Studio 2019 версия 16.11.16 | 16.11.16 | 2019 | 1929 | 192930145 | 14.29 |
Visual Studio 2019 версия 16.11.24 | 16.11.24 | 2019 | 1929 | 192930148 | 14.29 |
Visual Studio 2019 версия 16.11.27 | 16.11.27 | 2019 | 1929 | 192930151 | 14.29 |
Visual Studio 2019 версия 16.11.35 | 16.11.35 | 2019 | 1929 | 192930154 | 14.29 |
Visual Studio 2022 версии 17.0.1 | 17.0.1 | 2022 | 1930 | 193030705 | 14.30 |
Visual Studio 2022 версии 17.0.2 | 17.0.2 | 2022 | 1930 | 193030706 | 14.31 |
Visual Studio 2022 версии 17.1.3 | 17.1.3 | 2022 | 1931 | 193131105 | 14.31 |
Visual Studio 2022 версии 17.2.2 | 17.2.2 | 2022 | 1932 | 193231329 | 14.32 |
Visual Studio 2022 версии 17.3.4 | 17.3.4 | 2022 | 1933 | 193331630 | 14.33 |
Visual Studio 2022 версии 17.4.0 | 17.4.0 | 2022 | 1934 | 193431933 | 14.34 |
Visual Studio 2022 версии 17.5.0 | 17.5.0 | 2022 | 1935 | 193532215 | 14.35 |
Visual Studio 2022 версии 17.6.0 | 17.6.0 | 2022 | 1936 | 193632532 | 14.36 |
Visual Studio 2022 версии 17.6.2 | 17.6.2 | 2022 | 1936 | 193632532 | 14.36.32532 |
Visual Studio 2022 версии 17.6.4 | 17.6.4 | 2022 | 1936 | 193632535 | 14.36.32532 |
Visual Studio 2022 версии 17.7.0 | 17.7.0 | 2022 | 1937 | 193732822 | 14.36.32543 |
Visual Studio 2022 версии 17.8.0 | 17.8.0 | 2022 | 1938 | 193833130 | 14.38.33135 |
Visual Studio 2022 версии 17.9.1 | 17.9.1 | 2022 | 1939 | 193933520 | 14.39.33520 |
Visual Studio 2022 версии 17.9.6 | 17.9.6 | 2022 | 1939 | 193933523 | 14.39.33523 |
Visual Studio 2022 версии 17.10.1 | 17.10.1 | 2022 | 1940 | 194033811 | 14.40.33811 |
Совместимость
[ редактировать ]АБИ
[ редактировать ]компилятора Visual C++ ABI исторически менялся в зависимости от основных выпусков компилятора. [ 54 ] Это особенно актуально для контейнеров STL, размеры которых сильно различаются в зависимости от версии компилятора. [ 55 ] Поэтому Microsoft рекомендует не использовать интерфейсы C++ на границах модулей, если требуется включить клиентский код, скомпилированный с использованием другой версии компилятора. Вместо C++ Microsoft рекомендует использовать C. [ 56 ] или COM [ 57 ] интерфейсы, которые предназначены для обеспечения стабильного ABI между выпусками компилятора.
Все выпуски MSVC 14.x имеют стабильный ABI. [ 58 ] и двоичные файлы, созданные с использованием этих версий, можно смешивать с прямой совместимостью, учитывая следующие ограничения:
- Используемая версия набора инструментов должна быть равна или выше самой высокой версии набора инструментов, используемой для сборки любых связанных двоичных файлов.
- Версия распространяемого файла MSVC должна быть равна или выше версии набора инструментов, используемой любым компонентом приложения.
- Статические библиотеки или объектные файлы, скомпилированные с помощью /GL (оптимизация всей программы), не являются двоично совместимыми между версиями и должны использовать один и тот же набор инструментов.
Библиотеки времени выполнения C
[ редактировать ]Visual C++ поставляется с различными версиями библиотек времени выполнения C. [ 59 ] Это означает, что пользователи могут скомпилировать свой код с любой из доступных библиотек. Однако это может вызвать некоторые проблемы при использовании разных компонентов ( DLL , EXE ) в одной программе. Типичный пример — программа, использующая разные библиотеки . Пользователь должен использовать одну и ту же среду выполнения C для всех компонентов программы, если не понятны последствия. Microsoft рекомендует использовать многопоточную библиотеку динамической компоновки (параметр компилятора /MD или /MDd), чтобы избежать возможных проблем. [ 59 ]
ПОСИКС
[ редактировать ]Хотя CRT от Microsoft реализует большое подмножество интерфейсов POSIX , компилятор Visual C++ по умолчанию выдает предупреждение при каждом использовании таких функций. Причина в том, что стандарты C и C++ требуют префикса подчеркивания перед интерфейсами, определяемыми реализацией, поэтому использование этих функций нестандартно. [ 60 ] Однако системы, которые на самом деле совместимы с POSIX, не будут принимать эти подчеркнутые имена, и вместо этого более портативно просто отключить предупреждение.
С
[ редактировать ]Хотя продукт возник как IDE для языка программирования C , в течение многих лет поддержка этого языка компилятором соответствовала только исходной редакции стандарта C , датируемой 1989 годом, но не C99 версии стандарта . Планов по поддержке C99 не было даже в 2011 году, спустя более десяти лет после его публикации. [ 61 ]
В Visual C++ 2013 наконец-то добавлена поддержка различных функций C99 в режиме C (включая назначенные инициализаторы, составные литералы и _Bool
тип), [ 62 ] хотя оно еще не было завершено. [ 63 ] В Visual C++ 2015 поддержка C99 дополнительно улучшена за счет полной поддержки стандартной библиотеки C99, за исключением функций, для которых требуются функции языка C99, которые еще не поддерживаются компилятором. [ 64 ]
Большинство изменений версии C11 по-прежнему не поддерживались Visual C++ 2017. стандарта [ 65 ] Например, общие выборки через _Generic
ключевое слово не поддерживаются компилятором и приводят к синтаксической ошибке. [ 66 ]
Препроцессор был капитально отремонтирован в 2018 году, и на горизонте появился C11: [ 67 ]
Полное соответствие C11 запланировано на нашем плане, и обновление препроцессора — лишь первый шаг в этом процессе. С11
_Generic
Эта функция на самом деле не является частью препроцессора, поэтому она еще не реализована. Я ожидаю, что после реализации эта функция будет работать независимо от того, используется ли традиционная или обновленная логика препроцессора.
_Generic
поддержка MSVC была обеспечена с февраля 2020 года. [ 68 ]
В сентябре 2020 года Microsoft объявила, что поддержка стандартов C11 и C17 в MSVC появится в версии 16.8. [ 69 ] Сюда не вошли дополнительные функции, но Microsoft указала, что планирует добавить поддержку атомарности и потоков позднее. В версии 17.5 частичный (поскольку атомные блокировки отсутствуют) и экспериментальный (то есть скрытый за флагом компилятора). /experimental:c11atomics
) добавлена поддержка атомики [ 70 ] а в версии 17.8 была добавлена поддержка потоков, на этот раз без флага компилятора. [ 71 ] [ 72 ]
С++
[ редактировать ]При настройках по умолчанию MSVC не выполняет двухфазный поиск имени, что не позволяет ему помечать широкий спектр недопустимого кода. Большинство проверок откладываются до создания экземпляра шаблона. Более поздние версии исправляют это поведение, но его необходимо включить с помощью параметра командной строки. /permissive-
. [ 73 ]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б «В Visual C++ добавлена поддержка Windows» . Инфомир . 22 февраля 1993 г. с. 17.
- ^ Лекстрейт, Винсент (январь 2010 г.). «Маяк языков программирования, v10.0» . Архивировано из оригинала 30 мая 2012 года . Проверено 14 марта 2010 г.
- ^ «Нужны ли мне эти распространяемые файлы Microsoft Visual C++?» . Спроси Лео! Проверено 18 ноября 2012 г.
- ^ Компьютерный язык - выпуск 06 (1985-02) (CL Publications) (США) . Февраль 1985 года.
- ^ Лейбсон, Стив (1 февраля 1985 г.). «Обзоры программного обеспечения: группа экспертов анализирует 21 компилятор C» . Компьютерный язык . Проверено 5 июня 2020 г.
- ^ Лэдд, Скотт Роберт (1 августа 1990 г.). «Оптимизация с помощью Microsoft C 6.0» .
- ^ Майерс, Бен (1 июля 1992 г.). «Майкрософт С/С++» . Журнал ПК . Зифф Дэвис . п. 387 . Проверено 21 декабря 2023 г.
- ^ «Объявлено о выпуске новостей/программного обеспечения» . Инфомир . Медиа-группа InfoWorld. 15 марта 1993 г. Проверено 21 декабря 2023 г.
- ^ Получено с http://support.microsoft.com/kb/196831 .
- ^ Перейти обратно: а б «Visual C++ — мощный инструмент разработки» . Инфомир . 21 июня 1993 г. с. 94.
- ^ «Дебют конкурирующих расширителей DOS» . Инфомир . 1 марта 1993 г. с. 18.
- ^ «Visual C++ 1.5 интегрирует OLE, ODBC» . Инфомир . 8 ноября 1993 г. с. 5.
- ^ «Microsoft собирается выпустить предварительную версию 32-разрядной версии Visual C++» . Инфомир . 19 июля 1993 г. с. 12.
- ^ «IDE C++ развиваются» . Инфомир . 4 апреля 1994 г. с. 79.
- ^ «Стратегия Microsoft Visual C++» .
- ^ Перейти обратно: а б Калленс, Чейн; Блэквелл, Кен (1995). Кроссплатформенная разработка с использованием Visual C++ . Книги М&Т. ISBN 1-55851-428-7 . Проверено 27 января 2024 г.
- ^ Пламондон, Джеймс (9 октября 1997 г.). «Хронология всеобщей евангелизации» (PDF) . Корпорация Майкрософт. Архивировано из оригинала (PDF) 2 февраля 2007 г. Проверено 27 января 2024 г.
- ^ Перейти обратно: а б «Устаревшие товары» . Архивировано из оригинала 14 августа 2005 г.
- ^ Тот, Виктор (1996). «1» . Выпущен Visual C++ 4.0 . Индианаполис: Издательство SAMS . ISBN 9780672308741 . Проверено 26 июля 2013 г.
- ^ «История Visual Studio (часть 3)» . 6 августа 2021 г.
- ^ «Основные изменения Visual C++ 4.0 в 4.2» . Архивировано из оригинала 28 февраля 2010 г. Проверено 18 апреля 2018 г.
- ^ «Основные изменения Visual C++ 4.2 в 5.0» .
- ^ «Обучающая версия Microsoft Visual C++ 5.0» . Майкрософт . Архивировано из оригинала 27 апреля 1999 года.
- ^ «Microsoft Visual C++ 5.0 Professional Edition» . Майкрософт . Архивировано из оригинала 27 апреля 1999 года.
- ^ «Microsoft Visual C++ 5.0 Enterprise Edition» . Майкрософт . Архивировано из оригинала 17 апреля 1999 года.
- ^ «Microsoft Visual C++ 5.0 RISC Edition» . Майкрософт . Архивировано из оригинала 29 апреля 1999 года.
- ^ Шилдс, Натан П. (8 июня 2018 г.). «Уголовное заявление» . Министерство юстиции США . п. 128.
Это само по себе не является диспозитивной ссылкой, поскольку Visual C++ 6.0, выпущенный в 1998 году, до сих пор имеет сторонников, главным образом потому, что для его запуска не требуется установка платформы Microsoft .NET, как это делают более поздние версии Visual C++.
- ^ «Основные изменения Visual C++ 5.0 в 6.0» . Архивировано из оригинала 14 сентября 2008 года.
- ^ На этой странице подчеркивается, что пользователи также должны использовать Windows 98, Windows NT 4.0 или Windows 2000. Получено с http://msdn2.microsoft.com/en-us/vstudio/aa718349.aspx .
- ^ Дуглас Болинг: Программирование Microsoft Windows CE .NET, третье издание Microsoft Press; 3-е издание (25 июня 2003 г.) Мягкая обложка: 1264 страницы. ISBN 978-0735618848 — сопутствующий компакт-диск с встроенным Microsoft Visual C++ 4.0 с пакетом обновления 2. Архивировано 11 февраля 2013 г. в archive.today.
- ^ Как: изменить WINVER и _WIN32_WINNT.
- ^ Критические изменения
- ^ Платформы Windows (CRT)
- ^ «Глобальные изменения Visual C++ 2008» . 25 мая 2023 г.
- ^ Блог группы Visual C++. «IntelliSense, часть 2: Будущее» . Проверено 12 марта 2008 г.
- ^ «Почему IntelliSense не поддерживается для C++/CLI в Visual Studio 2010» . Проверено 13 марта 2011 г.
- ^ Блог группы Visual C++ (27 мая 2009 г.). «Восстановление IntelliSense» .
- ^ Блог группы Visual C++. «Генерация кода Visual C++ в Visual Studio 2010» .
- ^ «Основные возможности языка C++0x в VC10: таблица» .
- ^ «Стефан Т. Лававей: Все, что вы когда-либо хотели знать о nullptr» .
- ^ Блог Microsoft Windows SDK. «Выпущено: Windows SDK для Windows 7 и .NET Framework 4» .
- ^ ИСПРАВЛЕНИЕ: компиляторы Visual C++ удаляются при обновлении Visual Studio 2010 Professional или Visual Studio 2010 Express до Visual Studio 2010 SP1, если установлен Windows SDK v7.1.
- ^ «Новые возможности Visual C++ в Visual Studio 2012» . Сеть разработчиков Microsoft . Майкрософт. 29 ноября 2012 года . Проверено 20 сентября 2015 г.
- ^ «Новые возможности Visual C++ в Visual Studio 2013» . Сеть разработчиков Microsoft . Майкрософт. 28 апреля 2015 года . Проверено 20 сентября 2015 г.
- ^ Эрик Батталио (20 июля 2015 г.). «Visual Studio 2015 RTM уже доступна» . Блог группы Visual C++ . Майкрософт.
- ^ Стефан Т. Лававей (19 июня 2015 г.). «Функции C++ 14.11.17 в VS 2015 RTM» . Блог группы Visual C++ . Майкрософт.
- ^ Обзор автоматической вставки телеметрии Microsoft в двоичные файлы C++
- ^ «Visual Studio добавляет вызовы функций телеметрии в двоичный файл? • /r/cpp» . реддит . 7 мая 2016 года . Проверено 17 августа 2016 г.
- ^ Юлия Люсон (7 марта 2017 г.). «Объявление об общедоступной версии Visual Studio 2017… и многое другое» . Блог группы Visual Studio . Майкрософт.
- ^ Аманда Сильвер (14 февраля 2019 г.). «Присоединяйтесь к нам 2 апреля на презентации Visual Studio 2019!» . Блог группы Visual Studio . Майкрософт.
- ^ Аманда Сильвер (8 ноября 2021 г.). «Visual Studio 2022 теперь доступна» . Блог группы Visual Studio . Майкрософт.
- ^ «Предопределенные макросы компилятора/Вики/Компиляторы» . dev.to. 22 мая 2018 года . Проверено 20 февраля 2023 г.
- ^ «Предопределенные макросы / Microsoft Learn» . Learn.microsoft.com . 8 августа 2022 г. Проверено 26 мая 2023 г.
- ^ Microsoft MSDN: Критические изменения в Visual C++
- ^ Microsoft MSDN: Контейнеры (современный C++)
- ^ Microsoft MSDN: переносимость в границах ABI (современный C++)
- ^ Форум Microsoft: Двоичная совместимость версий Visual C++. Архивировано 16 февраля 2013 г. на archive.today.
- ^ docs.microsoft.com: двоичная совместимость C++ между Visual Studio 2015, 2017 и 2019.
- ^ Перейти обратно: а б Библиотеки времени выполнения C
- ^ «Совместимость» . Microsoft: возможности библиотеки CRT . 26 октября 2022 г.
- ^ «Поддержка C99» . Майкрософт Коннект . Архивировано из оригинала 4 марта 2016 г. Проверено 21 сентября 2015 г.
- ^ «Новые возможности Visual C++ в Visual Studio 2013» . Сеть разработчиков Microsoft . Майкрософт. 28 апреля 2015 г.
- ^ Пэт Бреннер (19 июля 2013 г.). «Поддержка библиотеки C99 в Visual Studio 2013» . Блог группы Visual C++ . Майкрософт.
- ^ «Новые возможности Visual C++ в Visual Studio 2015» . Сеть разработчиков Microsoft . Майкрософт. 3 января 2018 г.
- ^ «Пошаговое руководство: компиляция программы на языке C в командной строке» . Документация по Visual C++ . Майкрософт. 10 мая 2022 г.
- ^ «MSVC 2017 не поддерживает _Generic (универсальные макросы типа) в C» .
- ^ Лувсанбат, Бат-Улзий (6 июля 2018 г.). «Прогресс препроцессора MSVC в направлении соответствия» . Блог группы Visual Studio . Майкрософт. Архивировано из оригинала 3 марта 2024 года.
- ^ «Функции и исправления C++20» . реддит . 3 июля 2020 г.
- ^ «Стандартная поддержка C11 и C17 поступает в MSVC» . 14 сентября 2020 г.
- ^ «C11 Atomics в Visual Studio 2022 версии 17.5, предварительная версия 2» . 2022-12-13.
- ^ «Потоки C11 в Visual Studio 2022 версии 17.8, предварительная версия 2» . 26 сентября 2023 г.
- ^ Мерфи, Адриан (14 ноября 2023 г.). «Visual Studio 17.8 теперь доступна!» . Блог Visual Studio . Проверено 12 января 2024 г.
- ^ «Поддержка двухфазного поиска имени появилась в MSVC» . 11 сентября 2017 г.
Дальнейшее чтение
[ редактировать ]- Джонсон, Брайан (8 августа 2004 г.). «Создание приложений Win32 с использованием Visual C++ 2005 Express» . Блог разработчиков стартапов Брайана Джонсона . Microsoft – через архив документов Microsoft.
- Спрингфилд, Джим (25 сентября 2015 г.). «Обновление компилятора Microsoft C/C++» . Блог команды C++ . Майкрософт.