Microsoft Visual C++¶
Microsoft Visual C++ — это инструментарий для разработки программного обеспечения на языках C и C++ от корпорации Microsoft, входящий в состав интегрированной среды разработки (IDE) Visual Studio. Включает компилятор MSVC (Microsoft Visual C++ Compiler), редактор кода, отладчик, библиотеки времени выполнения и средства сборки проектов. Компоненты Visual C++ распространяются как в составе Visual Studio, так и отдельно в виде редистрибутивов (Redistributable) и пакетов Build Tools.
¶История
Первая версия Microsoft C (MS C) была выпущена в 1984 году для MS-DOS. В 1992 году появился Microsoft Visual C++ 1.0 — первый продукт под новым именем, ориентированный на разработку под Windows 3.1. Исторически важной стала версия Visual C++ 6.0 (1998), широко использовавшаяся в российской образовательной и корпоративной среде и долгое время остававшаяся стандартом де-факто.
В 2002 году вышла Visual Studio .NET с поддержкой управляемого кода .NET и компилятором, способным генерировать IL-код. В 2010 году появился Visual C++ 2010 с поддержкой стандарта C++0x и нового компилятора. Начиная с Visual Studio 2017 версии продукта стали обозначаться номерами вроде «15.x», а с 2019 года — «16.x»; с 2022 года используется шестизначная нумерация «17.x».
¶Состав
Стандартная поставка Visual C++ включает:
- Компилятор MSVC — транслирующий C/C++ код в машинный код для платформ Windows (x86, x64, ARM, ARM64).
- Сборщик LINK — объединяющий объектные файлы и библиотеки в исполняемые файлы и DLL.
- Библиотеки времени выполнения — CRT (C Runtime Library), STL (Standard Template Library), MFC (Microsoft Foundation Class), ATL (Active Template Library).
- Отладчик — интегрированный с Visual Studio, поддерживает отладку кода, управляемого и неуправляемого.
- Средства сборки — MSBuild, утилиты nmake, cl.exe.
¶Стандарты и совместимость
Компилятор MSVC поддерживает стандарты C и C++ в зависимости от версии: C++14, C++17, C++20 и частично C++23. Поддержка ведётся через ключи /std:c++14, /std:c++17, /std:c++20. Исторически MSVC считался менее строгим в соблюдении стандартов по сравнению с GCC и Clang, однако начиная с Visual Studio 2017 поддержка стандартов была существенно расширена.
¶Редистрибутивы
Чтобы запускать программы, скомпилированные MSVC, на компьютере без установленного Visual Studio, используются пакеты Microsoft Visual C++ Redistributable. Они содержат библиотеки времени выполнения (vcruntime140.dll, msvcp140.dll и др.) и распространяются бесплатно. На компьютерах пользователей часто установлено несколько таких пакетов — по одному на каждую версию компилятора, с которой были собраны установленные программы. Это распространённая причина появления многочисленных записей «Microsoft Visual C++ 20xx Redistributable» в списке установленных программ Windows.
¶Применение
Visual C++ применяется для разработки:
- настольных приложений для Windows;
- игр (многие движки, включая Unreal Engine, поддерживают MSVC как основной компилятор);
- системных и драйверных компонентов;
- приложений с использованием MFC и ATL;
- библиотек, используемых из других языков (C, C++, C#, Python через ctypes и др.).
В России продукт широко используется в образовательных учреждениях, включая курс программирования на C++, и в корпоративной разработке под Windows.
¶Альтернативы
Основными альтернативами MSVC являются GCC (GNU Compiler Collection) и Clang/LLVM. Кроссплатформенные инструменты сборки (CMake, Meson) обычно поддерживают MSVC наравне с GCC и Clang. В среде Linux и macOS MSVC не используется — там применяются нативные компиляторы.
¶Интересные факты
- Компилятор MSVC исторически известен кодом ошибки C2065 (undeclared identifier) и обширной базой сообщений об ошибках, используемой в обучении.
- Visual C++ 6.0 до сих пор встречается в легаси-системах, несмотря на прекращение официальной поддержки.
- Средства Build Tools Visual Studio распространяются бесплатно и могут использоваться в непрерывной интеграции (CI) без лицензии на саму IDE.
¶Источники
- Официальная документация Microsoft по Visual C++
- История компиляторов Microsoft C/C++
- Справочник по стандартам C++ и поддержке в MSVC
