Integrated development environment product
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 Software Development Kit, включали MASM 5.1 (один исполняемый файл, работавший как под MSDOS, так и под OS/2 1.x).
- C 6.0, выпущенный в 1989 году, добавил поддержку крошечной модели памяти и лучшую поддержку стандарта ANSI C89 (в документации прямо говорится, что он не на 100% соответствует, но кажется достаточно близким для практических целей). Он добавил Programmer's Workbench IDE, глобальный анализ потока, браузер исходного кода и новый отладчик. К удивлению многих, C++ не был включен, хотя у конкурентов уже были предложения. [6]
- C/C++ 7.0 был выпущен в 1992 году. Убрана поддержка OS/2. Для компиляции требовался процессор 386 и включенный расширитель DOS , 386MAX , [7] хотя для того, чтобы пользователи могли использовать расширители DOS в своих собственных программах, которые они пишут, требовался один из нескольких выпущенных позднее сторонних инструментов. [8] Добавлена встроенная поддержка C++ и MFC (Microsoft Foundation Class Library) 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] Также был включен Phar Lap 286 DOS Extender Lite. [ 11 ]
- Visual C++ 1.5 был выпущен в декабре 1993 года, включал MFC 2.5 и добавлял поддержку OLE 2.0 и ODBC в MFC. [12] Это была первая версия Visual C++, которая поставлялась только на CD-ROM .
- Visual C++ 1.51 и 1.52 были доступны в рамках подписной услуги.
- Visual C++ 1.52b аналогичен 1.52, но не включает в себя комплект разработки элементов управления.
- 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-битной разработки (и требующей 32-битной Windows NT в качестве хоста) для архитектуры 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 , тогда носившая кодовое название «Chicago», еще не была выпущена, а 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 ). [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 IDE. Его тогдашняя новаторская мозаичная компоновка неперекрывающихся панелей — панель навигации, панель редактора/отладчика исходного уровня и панель вывода консоли [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] Доступен в четырех редакциях: Learning, [23] Professional, [24] Enterprise, [25] и RISC. [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 Processor Pack». [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 "long long". Он считался патчем для 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
- eMbedded 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 Framework ( C++/CLI ) с целью замены предыдущей версии ( Managed C++ ). Однако Managed 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 . [31] [32] Версия SP1 (14.00.50727.762) также доступна в обновлении Microsoft Windows SDK для Windows Vista .
- Visual C++ 2008 (также известный как Visual C++ 9.0) был выпущен в ноябре 2007 года. Эта версия поддерживает .NET 3.5. Managed C++ для CLI по-прежнему доступен через параметры компилятора. По умолчанию все приложения, скомпилированные с использованием Visual C++ 2008 Runtimes (статическое и динамическое связывание), будут работать только в 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 Runtimes, работают только в Windows XP SP2 и более поздних версиях. Версия RTM (16.00.30319) также доступна в Windows SDK для Windows 7 и .NET Framework 4 (WinSDK v7.1). [41] Версия SP1 (16.00.40219) доступна как часть Visual Studio 2010 Service Pack 1 или через обновление компилятора Microsoft Visual C++ 2010 Service Pack 1 для Windows SDK 7.1. [42]
- Visual C++ 2012 (также известный как Visual C++ 11.0) был выпущен 15 августа 2012 года. Он включает улучшенную поддержку C++11 и поддержку разработки Windows Runtime . [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 заявила, что они удалят эти вызовы телеметрии при компиляции с будущим Visual Studio 2015 Update 3. [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.
Версия продукта Visual, например "17.3.4", обозначает версию Visual Studio, с которой была упакована версия 19.33 компилятора. Затем идет версия Microsoft Visual C/C++ Runtime Library, например "14.3". Из этого можно также вывести версию набора инструментов, которую можно получить, взяв первые три цифры версии библиотеки времени выполнения и отбросив десятичную часть, например "143". Она включает в себя библиотеку времени выполнения Visual C/C++, а также компиляторы, компоновщики, ассемблеры, другие инструменты сборки и соответствующие библиотеки и заголовочные файлы. Ниже приведена (доступная для считывания) таблица известных коррелированных номеров версий.
Совместимость
АБИ
ABI компилятора Visual C++ исторически менялся между основными выпусками компилятора. [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 Run-Time для всех компонентов программы, если последствия не понятны. Microsoft рекомендует использовать многопоточную библиотеку динамической компоновки (опция компилятора /MD или /MDd), чтобы избежать возможных проблем. [59]
POSIX
Хотя 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 есть в нашей дорожной карте, и обновление препроцессора — это только первый шаг в этом процессе. _Generic
Функция C11 на самом деле не является частью препроцессора, поэтому она еще не реализована. После реализации я ожидаю, что функция будет работать независимо от того, используется ли традиционная или обновленная логика препроцессора.
_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]
Прием
Описывая его как «превосходный», BYTE в феврале 1989 года одобрил поддержку OS/2 в Microsoft C 5.1, QuickC для интерактивной разработки и отладчик CodeView. Хотя Watcom C производил немного более быстрый код, журнал заявил, что разработчики «все равно могут предпочесть более дружественные и мощные инструменты Microsoft». [74]
Ссылки
- ^ ab "Visual C++ добавляет поддержку Windows". InfoWorld . 22 февраля 1993 г. стр. 17.
- ^
- ^ «Нужны ли мне эти распространяемые пакеты Microsoft Visual C++?». Спросите Лео!. Получено 18.11.2012.
- ^ Computer Language - Выпуск 06 (1985-02) (CL Publications) (США). Февраль 1985 г.
- ^ Лейбсон, Стив (1985-02-01). "Обзоры программного обеспечения: группа экспертов анализирует 21 компилятор C". Computer Language . Получено 2020-06-05 .
- ↑ Лэдд, Скотт Роберт (1 августа 1990 г.). «Оптимизация с помощью Microsoft C 6.0».
- ^ Майерс, Бен (1992-07-01). "Microsoft C/C++". PC Magazine . Ziff Davis . стр. 387. Получено 21 декабря 2023 г.
- ^ "Анонсирован выпуск новостей/программного обеспечения". InfoWorld . InfoWorld Media Group. 1993-03-15 . Получено 2023-12-21 .
- ^ Получено с http://support.microsoft.com/kb/196831.
- ^ ab "Visual C++ — мощный инструмент разработки". InfoWorld . 21 июня 1993 г., стр. 94.
- ^ "Дебют конкурентных DOS-расширителей на выставке". InfoWorld . 1 марта 1993 г. стр. 18.
- ^ "Visual C++ 1.5 интегрирует OLE, ODBC". InfoWorld . 8 ноября 1993 г. стр. 5.
- ^ "Microsoft готовится выпустить предварительный релиз 32-битной версии Visual C++". InfoWorld . 19 июля 1993 г. стр. 12.
- ^ "Среды разработки C++ развиваются". InfoWorld . 4 апреля 1994 г. стр. 79.
- ^ «Стратегия Microsoft Visual C++».
- ^ ab Калленс, Чейн; Блэквелл, Кен (1995). Кроссплатформенная разработка с использованием Visual C++. Книги M&T. ISBN 1-55851-428-7. Получено 27 января 2024 г. .
- ^ Пламондон, Джеймс (9 октября 1997 г.). "Generalized Evangelism Timeline" (PDF) . Корпорация Microsoft. Архивировано из оригинала (PDF) 2007-02-02 . Получено 27 января 2024 г.
- ^ ab "Устаревшие продукты". Архивировано из оригинала 2005-08-14.
- ^ Тот, Виктор (1996). "1". Visual C++ 4.0 вышел в свет. Индианаполис: SAMS Publishing . ISBN 9780672308741. Получено 26 июля 2013 г.
- ^ «История Visual Studio (часть 3)». 6 августа 2021 г.
- ^ "Major Changes from Visual C++ 4.0 to 4.2". Архивировано из оригинала 2010-02-28 . Получено 2018-04-18 .
- ^ «Основные изменения от Visual C++ 4.2 до 5.0».
- ^ "Microsoft Visual C++ 5.0 Learning Edition". Microsoft . Архивировано из оригинала 27 апреля 1999 г.
- ^ "Microsoft Visual C++ 5.0 Professional Edition". Microsoft . Архивировано из оригинала 27 апреля 1999 года.
- ^ "Microsoft Visual C++ 5.0 Enterprise Edition". Microsoft . Архивировано из оригинала 17 апреля 1999 года.
- ^ "Microsoft Visual C++ 5.0 RISC Edition". Microsoft . Архивировано из оригинала 29 апреля 1999 г.
- ^ Шилдс, Натан П. (8 июня 2018 г.). «Уголовная жалоба». Министерство юстиции США . стр. 128.
Это само по себе не является диспозитивной ссылкой, поскольку Visual C++ 6.0, выпущенный в 1998 г., по-прежнему имеет сторонников, в основном потому, что для его работы не требуется установка .NET Framework от Microsoft, как это делают более поздние версии 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 eMbedded Visual C++ 4.0 Service Pack 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 Developer Network . Microsoft. 29 ноября 2012 г. Получено 20 сентября 2015 г.
- ^ "Что нового для Visual C++ в Visual Studio 2013". Microsoft Developer Network . Microsoft. 28 апреля 2015 г. Получено 20 сентября 2015 г.
- ^ Эрик Батталио (20 июля 2015 г.). "Visual Studio 2015 RTM уже доступна". Блог команды Visual C++ . Microsoft.
- ^ Стефан Т. Лававей (19 июня 2015 г.). "C++11/14/17 Features In VS 2015 RTM". Блог команды Visual C++ . Microsoft.
- ^ Обзор автоматической вставки телеметрии в двоичные файлы C++ от Microsoft
- ^ "Visual Studio добавляет вызовы функций телеметрии в двоичный файл? • /r/cpp". reddit . 7 мая 2016 г. Получено 17 августа 2016 г.
- ^ Джулия Лиусон (7 марта 2017 г.). «Объявление о выпуске Visual Studio 2017 General Availability… и многое другое». Блог команды Visual Studio . Microsoft.
- ^ Аманда Сильвер (14 февраля 2019 г.). «Присоединяйтесь к нам 2 апреля на запуске Visual Studio 2019!». Блог команды Visual Studio . Microsoft.
- ^ Аманда Сильвер (8 ноября 2021 г.). "Visual Studio 2022 уже доступна". Блог команды Visual Studio . Microsoft.
- ^ "Предопределенные макросы компилятора / Wiki / Компиляторы". dev.to . 22 мая 2018 . Получено 2023-02-20 .
- ^ "Предопределенные макросы / Microsoft Learn". learn.microsoft.com . 8 августа 2022 г. Получено 26.05.2023 .
- ^ Microsoft MSDN: Критические изменения в Visual C++
- ^ Microsoft MSDN: Контейнеры (современный C++)
- ^ Microsoft MSDN: Переносимость на границах ABI (современный C++)
- ^ Форум Microsoft: Двоичная совместимость между версиями Visual C++ Архивировано 16.02.2013 на archive.today
- ^ docs.microsoft.com: Двоичная совместимость C++ между Visual Studio 2015, 2017 и 2019
- ^ ab Библиотеки времени выполнения C
- ^ "Совместимость". Microsoft: Возможности библиотеки CRT . 26 октября 2022 г.
- ^ "Поддержка C99". Microsoft Connect . Архивировано из оригинала 2016-03-04 . Получено 2015-09-21 .
- ^ "Что нового для Visual C++ в Visual Studio 2013". Microsoft Developer Network . Microsoft. 28 апреля 2015 г.
- ^ Пэт Бреннер (19 июля 2013 г.). "Поддержка библиотеки C99 в Visual Studio 2013". Блог команды Visual C++ . Microsoft.
- ^ "Что нового для Visual C++ в Visual Studio 2015". Microsoft Developer Network . Microsoft. 3 января 2018 г.
- ^ "Пошаговое руководство: Компиляция программы на языке C в командной строке". Документация Visual C++ . Microsoft. 10 мая 2022 г.
- ^ «MSVC 2017 не поддерживает _Generic (тип универсальных макросов) в C».
- ^ Luvsanbat, Bat-Ulzii (6 июля 2018 г.). "MSVC Preprocessor Progress towards Conformance". Блог команды Visual Studio . Microsoft. Архивировано из оригинала 3 марта 2024 г.
- ^ "C++20 Features and Fixes". reddit . 3 июля 2020 г.
- ^ "Поддержка стандартов C11 и C17 появится в MSVC". 14 сентября 2020 г.
- ^ "C11 Atomics в Visual Studio 2022 версии 17.5 Preview 2". 13.12.2022.
- ^ "Потоки C11 в Visual Studio 2022 версии 17.8 Preview 2". 2023-09-26.
- ^ Мерфи, Адриан (14.11.2023). "Visual Studio 17.8 уже доступна!". Блог Visual Studio . Получено 12.01.2024 .
- ^ "Поддержка двухфазного поиска имени появилась в MSVC". 2017-09-11.
- ^ Апики, Стивен; Уделл, Джон (февраль 1989). «Сглаживание C». BYTE . стр. 170–186 . Получено 08.10.2024 .
Дальнейшее чтение
- Джонсон, Брайан (8 августа 2004 г.). «Создание приложений Win32 с использованием Visual C++ 2005 Express». Блог разработчиков-стартапов Брайана Джонсона . Microsoft – через архив документов Microsoft.
- Спрингфилд, Джим (25 сентября 2015 г.). "Омоложение компилятора Microsoft C/C++". Блог команды C++ . Microsoft.
Внешние ссылки
- Официальный сайт
- Инструменты и функции C++ в выпусках Visual Studio
- Инструменты сборки Microsoft C++
- C9::GoingNative на канале Microsoft Channel 9