Программирование с на visual studio

Visual C++
Visual Studio Icon 2019.svg
Разработчик(ы) Майкрософт
Первоначальный выпуск Февраль 1993года ; 28 лет назад[1]
Стабильное высвобождение

14.28.30031

Написано в C++[2]
Операционная система Windows
Платформа IA-32, x86-64 и ARM
Доступно в Английский, Китайский (упрощенный и традиционный), Чешский. Французский, Немецкий. Итальянский, Японский. Корейский, Польский. Португальский (Бразильский), Русский. Испанский, Турецкий
Тип ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ
Лицензия Пробное и бесплатное программное обеспечение
Веб-сайт docs.microsoft.com/en-us/cpp/

Microsoft Visual C++ (MSVC) — это компилятор для языков программирования C , C++и C++/CLI от 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 добавил поддержку больших моделей.

  • C 3.0 был первой версией. Разработанной внутри Microsoft.[4] Эта версия предполагала совместимость с K&R и более поздним стандартом ANSI. Он использовался внутри Microsoft (для разработки Windows и Xenix) в начале 1984 года. Он поставляется как продукт в 1985 году.
  • C 4.0 добавил оптимизацию и CodeView, отладчик исходного уровня.
  • C 5.0 добавил оптимизацию циклов и поддержку (массивы размером более 64 КБ). Microsoft Fortran и первый 32-битный компилятор для 80386 также были частью этого проекта.
  • C 5.1, выпущенный в 1988 году. Позволял компилировать программы для OS/2 1.x.

  • C 6.0 выпущен в 1989 году. Он добавил IDE верстака программиста. Глобальный анализ потока. Исходный браузер и новый отладчик и включил дополнительный интерфейс C++.]
  • C/C++ 7.0 был выпущен в 1992 году. Добавлена встроенная поддержка C++ и MFC (Microsoft Foundation Class Library) 1.0.[6]
  • Visual C++ 1.0, который включал MFC 2.0, был первой версией Он был совместим с Cfront 2.1[7] и доступен в двух изданиях:[1]
  • Visual C++ 1.5 был выпущен в декабре 1993 года. Включал MFC 2.5 и добавил поддержку OLE 2.0 и ODBC к MFC.[9] Это была первая версия Visual C++. Которая появилась только на CD-ROM.
    • Visual C++ 1.51 и 1.52 были доступны как часть абонентской службы.

    • Visual C++ 1.52 b аналогичен версии 1.52, но не включает в себя комплект разработки Control Development Kit.
    • Visual C++ 1.52 c был исправленной версией версии 1.5. Это последняя и, возможно. Самая популярная платформа разработки для Microsoft Windows 3.x. Она доступна через Microsoft Developer Network.

Строго 32-битные версии

  • Visual C++ 1.0 (оригинальное название: Visual C++ 32-bit Edition) была первой версией для 32-битной разработки для архитектуры Intel 386.[10] Хотя она была выпущена, когда была доступна 16-битная версия 1.5, она не включала поддержку OLE2 и ODBC. Он также был доступен в комплекте под названием Visual C++ 16/32-bit Suite. Который включал Visual C++ 1.5.

    ]

  • 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 также поддерживал разработку Win32s. Он доступен через Microsoft Developer Network. Существовала версия Visual C++ 2.0 RISC для MIPS и процессоры Alpha. А также кроссплатформенное издание для Macintosh ( набор команд 68000).[12]

    • Visual C++ 2.1 и 2.2 были обновлениями для версии 2.0, доступными по подписке.
  • Visual C++ 4.0, выпущенный в 1995-12-11 годах,[13] представил IDE Developer Studio. Его тогдашняя новая плиточная компоновка неперекрывающихся панелей-панель навигации. Панель редактора комбинаций/отладчика исходного уровня и панель вывода консоли

    [14]-продолжается в 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.]

  • Visual C++ 4.2 не поддерживал разработку Windows 3.x (

    Win32s).[16] Это была окончательная версия с кросс-платформенным выпуском для Macintosh, и она отличалась от версии 2.x тем. Что она также позволяла компиляцию для набора инструкций PowerPC.

  • Visual C++ 5.0, который включал MFC 4.21 и был выпущен в 1997-04-28 годах,[13] был серьезным обновлением по сравнению с 4.2.[17] Доступен в четырех изданиях: Learning,[18] Professional,[19] Enterprise,[20] и RISC.[21]
  • Visual C++ 6.0 (широко известный как VC6), который включал MFC 6.0, был выпущен в 1998году. Выпуск был несколько спорным. Так как он не включал ожидаемое обновление MFC.

    Visual C++ 6.0 по-прежнему довольно популярен и часто используется для поддержки устаревших проектов. Однако есть проблемы с этой версией под Windows XP. Особенно в режиме отладки (например. Значения статических переменных не отображаются). Проблемы отладки могут быть решены с помощью патча под названием [24] Номер версии: 12.00.8804

  • Visual C++ .NET 2002 (также известный как Visual C++ 7.0), который включал MFC 7.0, был выпущен в 2002 году с поддержкой генерации кода времени связи и отладки проверок времени выполнения, .NET 1.0 и Visual C# и управляемого 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. Он считался патчем к Visual C++ .NET 2002. Соответственно. Англоязычная версия обновления Visual Studio .NET 2003 поставляется за минимальную стоимость владельцам англоязычной версии Visual Studio .NET 2002. Это была последняя версия. Поддерживающая Windows 95 и NT 4.0 в качестве целевой.

    Номер версии: 13.10.3077

  • Встроенный Visual C++[25] в различных версиях использовался для разработки некоторых версий операционной системы Windows CE. Первоначально он заменил среду разработки. Состоящую из инструментов. Добавленных в Visual C++ 6.0. Встроенный Visual C++ был заменен как отдельная среда разработки Microsoft Visual Studio 2005.

32-разрядные и 64-разрядные версии

  • Visual C++ 2005 (также известный как Visual C++ 8.0), который включал в себя MFC 8.0, был выпущен в ноябре 2005 года. Эта версия поддерживает .NET 2.0 и включает в себя новую версию C++. Ориентированную на .

    NET framework (C++/CLI) с целью замены предыдущей версии (Managed C++). Однако управляемый C++ для CLI по-прежнему доступен через параметры компилятора. Он также ввел OpenMP. В Visual C++ 2005 Microsoft также представила Team Foundation Server Visual C++ 8.0 имеет проблемы с компиляцией проектов MFC AppWizard, созданных с использованием Visual Studio 6.0, поэтому обслуживание устаревших проектов может быть продолжено с помощью оригинальной IDE. Если переписывание невозможно. Visual C++ 2005-это последняя версия. Предназначенная для Windows 98 и Windows Me.[26][27] Версия SP1 (14.00.50727.762) также доступна в

    Microsoft Windows SDK Update для Windows Vista.

  • Visual C++ 2008 (также известный как Visual C++ 9.0) был выпущен в ноябре 2007 года. Эта версия поддерживает .NET 3.5. Управляемый C++ для CLI по-прежнему доступен через параметры компилятора. По умолчанию все приложения. Скомпилированные со средами выполнения Visual C++ 2008 (статическое и динамическое связывание). Будут работать только под Windows 2000 и более поздних версий.[28][29] Пакет функций, выпущенный для 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-сервер компактный базу данных для хранения информации об исходном коде. В том числе IntelliSense для информации. Для лучшего IntelliSense и автозавершение кода поддержки.[30] Тем не менее. Visual С++ 2010 не поддерживает технологию IntelliSense для C++/CLI для.[31] в этой версии добавлена в C++ параллельные вычисления библиотека называется параллельной Шаблоны библиотека

    , частичная поддержка стандарта C++11, значительно улучшена технология IntelliSense на основе Эдисон дизайн группы переднего плана,[32] и улучшение производительности. Как компилятор сгенерированный код.[33] Эта версия построена на .NET 4.0, но поддерживает компиляцию в машинный код. Частичная поддержка C++11 в основном состоит из шести функций компилятора:[34] lambdas. Rvalue references. Auto, decltype. Static_assert и nullptr. C++11 также поддерживает библиотечные функции (например. Перемещение компонентов TR1 из пространства имен std::tr1 непосредственно в пространство имен std). Вариадические шаблоны были также рассмотрены. Но отложены до некоторой будущей версии из-за более низкого приоритета. Который проистекал из того факта, что. В отличие от других дорогостоящих в реализации функций (ссылки lambda, rvalue). Вариационные шаблоны принесут пользу только меньшинству авторов библиотек. А не большинству конечных пользователейкомпилятора. Версия RTM (16.00.30319) также доступна в Windows SDK для Windows 7 и .NET Framework 4 (WinSDK v7.1).] Версия SP1 (16.00.40219) доступна как часть Visual Studio 2010 с пакетом обновления 1 или через обновление компилятора Microsoft Visual C++ 2010 с пакетом обновления 1 для Windows SDK 7.1.]

  • Visual C++ 2012 (также известный как Visual C++ 11.0) был выпущен 15 августа 2012 года. Он имеет улучшенную поддержку C++11 и поддержку разработки среды выполнения Windows.[38]
  • Visual C++ 2013 (также известный как Visual C++ 12.0) был выпущен 17 октября 2013 года. Он имеет дополнительную поддержку C++11 и C99, а также вводит REST SDK.]
  • Visual C++ 2015 (также известный как Visual C++ 14.0) был выпущен 20 июля 2015 года.[40] Он имеет улучшенную поддержку C++11/14/17.[41] Без какого-либо объявления от Microsoft. Visual Studio 2015 Update 2 начал генерировать вызовы телеметрии в скомпилированных двоичных файлах. После того, как некоторые пользователи связались с Microsoft об этой проблеме. Microsoft сказала. Что они удалят эти вызовы телеметрии при компиляции с будущим обновлением Visual Studio 20153. Рассматриваемая функция была удалена из статических библиотек Visual C++ CRT в Visual Studio 2015 Update 3.]
  • Visual C++ 2017 (также известный как Visual C++ 14.1) был выпущен 7 марта 2017 года.
  • Visual C++ 2019 (также известный как Visual C++ 14.2) был выпущен 2 апреля 2019 года.

Внутренняя нумерация версий

Предопределенный макрос _MSC_VERуказывает основные и второстепенные номера версий компилятора Visual C++. Значение макроса представляет собой целочисленный литерал. В котором последние две цифры указывают на младший номер версии. А предыдущие цифры-на главный номер версии.

Начиная с Visual Studio 2017, _MSC_VERон монотонно увеличивается при каждом обновлении набора инструментов Visual C++. Так, например, версия | 14.11, поставляемая с Visual Studio 2017 версии 15.3.0, устанавливает _MSC_VERзначение 1911. Корпорация Майкрософт рекомендует использовать >=оператор для проверки значения _MSC_VERпараметра .

Вот значения _MSC_VERдля различных версий Visual C++:

Версии MSC
Версия MSC _MSC_VER
1.0 100
2.0 200
3.0 300
4.0 400
5.0 500
6.0 600
7.0 700
Версии MSVC++
Версия MSVC++ _MSC_VER
1.0 800
2.0 900
4.0 1000 (Developer Studio 4.0)
4.2 1020 (Developer Studio 4.2)
5.0 1100 (Visual Studio 5.0)
6.0 1200 (Visual Studio 6.0)
7.0 1300 (Visual Studio 2002 7.0)
7.1 1310 (Visual Studio 2003 7.1)
8.0 1400 (Visual Studio 2005 8.0)
9.0 1500 (Visual Studio 2008 9.0)
10.0 1600 (Visual Studio 2010 10.0)
11.0 1700 (Visual Studio 2012 11.0)
12.0 1800 (Visual Studio 2013 12.0)
14.0 1900 (Visual Studio 2015 14.0)
14.1 1910 (Visual Studio 2017 15.0)
14.11 1911 (Visual Studio 2017 15.3)
14.12 1912 (Visual Studio 2017 15.5)
14.13 1913 (Visual Studio 2017 версии 15.6)
14.14 1914 (Visual Studio 2017 версии 15.7)
14.15 1915 (Visual Studio 2017 версии 15.8)
14.16 1916 (Visual Studio 2017 версии 15.9)
14.2 1920 (Visual Studio 2019 версии 16.0)
14.21 1921 (Visual Studio 2019 версии 16.1)
14.22 1922 (Visual Studio 2019 версии 16.2)
14.23 1923 (Visual Studio 2019 Версия 16.3)
14.24 1924 (Visual Studio 2019 Версия 16.4)
14.25 1925 (Visual Studio 2019 Версия 16.5)
14.26 1926 (Visual Studio 2019 Версия 16.6)
14.27 1927 (Visual Studio 2019 Версия 16.7)
14.28 1928 (Visual Studio 2019 Версия 16.8)
14.29 1929 (Visual Studio 2019 Версия 16.9)

Эти номера версий относятся к основным номерам версий компиляторов и библиотек Visual C++. Как видно из каталогов установки. Это не относится к году в названии выпуска Visual Studio. Имеется подробный список.[44]

Обратите внимание. Что исполняемая версия компилятора C++ совпадает _MSC_VERи отличается от версии продукта Visual C++ в целом. Например, cl.exe включено в | 14.22 (Visual Studio 2019 16.2.5) сообщает свою версию как 19.22.27905, если выполняется без аргументов.

Существует также _MSC_FULL_VERзначение. Определенное начиная с 1200 года. Для получения дополнительной информации о номере сборки.

ABI

ABI компилятора Visual C++ исторически менялись между основными выпусками компилятора.[45] Это особенно относится к контейнерам STL. Где размеры контейнеров сильно варьировались между выпусками компилятора.Поэтому Microsoft рекомендует не использовать интерфейсы C++ на границах модулей. Когда требуется включить клиентский код. Скомпилированный с использованием другой версии компилятора. Вместо C++ Microsoft рекомендует использовать интерфейсы C[47] или COM[48], которые предназначены для обеспечения стабильного ABI между выпусками компилятора.

Все выпуски 14.x MSVC имеют стабильный ABI,[49] и двоичные файлы. Построенные с этими версиями. Могут быть смешаны совместимым образом. Учитывая следующие ограничения:

  • Используемая версия набора инструментов должна быть равна или выше самой высокой версии набора инструментов. Используемой для создания любых связанных двоичных файлов.
  • Распространяемая версия MSVC должна быть равна или выше версии набора инструментов. Используемой любым компонентом приложения.
  • Статические библиотеки или объектные файлы. Скомпилированные с помощью /GL (Оптимизация всей программы). Не являются двоично совместимыми между версиями и должны использовать один и тот же набор инструментов.

Библиотеки времени выполнения C

Visual C++ поставляется с различными версиями библиотек среды выполнения C.[50] Это означает. Что пользователи могут компилировать свой код с любой из доступных библиотек. Однако это может вызвать некоторые проблемы при использовании различных компонентов (DLL, EXES) в одной и той же программе. Типичным примером является программа. Использующая различные библиотеки. Пользователь должен использовать одно и то же время выполнения C для всех компонентов программы. Если последствия не поняты. Microsoft рекомендует использовать многопоточнуюдинамическую библиотеку (/MD или /MDd компилятор). Чтобы избежать возможных проблем.[50]

POSIX

Хотя CRT Microsoft реализует большое подмножество интерфейсов POSIX. Компилятор Visual C++ по умолчанию выдает предупреждение при каждом использовании таких функций. Обоснование заключается в том. Что стандарты C и C++ требуют префикса подчеркивания перед интерфейсами. Определяемыми реализацией. Поэтому использование этих функций является нестандартным.[51] Однако системы. Которые на самом деле совместимы с POSIX. Не будут принимать эти подчеркнутые имена. И вместо этого более переносимо просто отключить предупреждение.

C

Хотя продукт возник как IDE для языка программирования C. В течение многих лет поддержка компилятором этого языка соответствовала только оригинальному изданию стандарта C, датируемому 1989 годом. Но не редакции стандарта C99. Не было никаких планов по поддержке C99 даже в 2011 году. Более чем через десять лет после его публикации.[52]

Visual C++ 2013, наконец. Добавил поддержку различных функций C99 в своем режиме C (включая назначенные инициализаторы. Составные литералы и _Boolтип), хотя он все еще не был завершен.[54] Visual C++ 2015 дополнительно улучшил поддержку C99 с полной поддержкой стандартной библиотеки C99, за исключением функций, требующих функций языка C99, которые еще не поддерживаются компилятором.]

Большинство изменений, внесенных в редакцию стандарта C11, по-прежнему не поддерживаются Visual C++ 2017.[56] Например, общие выборки с помощью _Genericключевого слова не поддерживаются компилятором и приводят к синтаксической ошибке.[57]

Препроцессор был капитально отремонтирован в 2018 году. И в поле зрения появился C11:[58]

Полное соответствие C11 включено в нашу дорожную карту. И обновление препроцессора-это только первый шаг в этом процессе. Функция C11 _Genericна самом деле не является частью препроцессора. Поэтому она еще не реализована. При реализации я ожидаю. Что эта функция будет работать независимо от того. Используется ли традиционная или обновленная логика препроцессора.

_Generic поддержка была передана MSVC по состоянию на февраль 2020 года, но неясно. Когда она будет отправлена.]

В сентябре 2020 года Microsoft объявила о поддержке стандартов C11 и C17 в MSVC.]

  1. ^ b
  2. ^
  3. ^ . Спроси у Лео!. Проверено 2012-11-18.
  4. ^ Лейбсон, Стив (1985-02-01). . Компьютерный язык. Получено 2020-06-05.
  5. ^ Лэдд, Скотт Роберт (1 августа 1990). .
  6. ^ [править]

    Внешние ссылки