Microsoft Visual C++ is a commercial (free version available),
integrated development environmentAn integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...
(IDE) product from
MicrosoftMicrosoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...
for the
CC is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
,
C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, and
C++/CLIC++/CLI is Microsoft's language specification intended to supersede Managed Extensions for C++. It is a complete revision that aims to simplify the older Managed C++ syntax . C++/CLI is standardized by Ecma as ECMA-372...
programming languageA programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
s. It has tools for
developingA software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...
and
debuggingDebugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware, thus making it behave as expected. Debugging tends to be harder when various subsystems are tightly coupled, as changes in one may cause bugs to emerge...
C++ code, especially code written for the Microsoft Windows API, the
DirectXMicrosoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay,...
API, and the Microsoft .NET Framework.
History
The predecessor to Visual C++ was called
Microsoft C/C++. There was also a
Microsoft QuickCMicrosoft QuickC was a commercial integrated development environment product engineered by Microsoft for the C programming language, superseded by Visual C++ Standard Edition. Its main competitor was Turbo C.-Version history:...
2.5 and a
Microsoft QuickC for Windows 1.0.
16-bit versions
Microsoft C 1.0, based on
Lattice CLattice C was the first C compiler for MS-DOS on the IBM PC, in 1982. It was ported to many other platforms, such as mainframes , minicomputers , workstations , OS/2, the Commodore Amiga, Atari ST and the Sinclair QL.The compiler was subsequently repackaged by Microsoft under a distribution...
, was Microsoft's first C product in 1983. It was not K&R C.
- C 2.0 added large model support.
- C 3.0 was the first version developed inside Microsoft. It was extremely compatible with K&R and the later ANSI standard. It was being used inside Microsoft (for Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
and XenixXenix is a version of the Unix operating system, licensed to Microsoft from AT&T in the late 1970s. The Santa Cruz Operation later acquired exclusive rights to the software, and eventually superseded it with SCO UNIX ....
development) in early 1984. It shipped as a product in 1985.
- C 4.0 added optimizations and CodeView
CodeView was a standalone debugger created by David Norris at Microsoft in 1985 as part of its development toolset. It originally shipped with Microsoft C 4.0 and later. It also shipped with Visual Basic for MS-DOS, Microsoft Basic PDS, and a number of other Microsoft language products...
, a source level debugger.
- C 5.0 added loop optimizations and Huge Model (arrays bigger than 64k) support. Microsoft Fortran and the first 32 bit compiler for 80386 were also part of this project.
- C 6.0 released in 1989. It added global flow analysis, a source browser, and a new debugger, and included an optional C++ front end.
- C/C++ 7.0 was released in 1992. It added built-in support for C++ and MFC 1.0.Visual C++ 1.0, which included MFC 2.0, was the first version of Visual C++, released in February 1993. It was Cfront
Cfront was the original compiler for C++ from around 1983, which converted C++ to C; developed by Bjarne Stroustrup. The preprocessor did not understand all of the language and much of the code was written via translations. Cfront had a complete parser, built symbol tables, and built a tree for...
2.1 compliant and available in two editions:
- Standard – replaced QuickC for Windows.
- Professional – replaced C/C++ 7.0. Included the ability to build both DOS and Windows applications, an optimizing compiler, a source profiler, and the Windows 3.1 SDK. The Phar Lap
Phar Lap was a software company specializing in software development tools for DOS operating systems. They were most noted for their software allowing developers to access memory beyond the 640 KiB limit of DOS and were an author of the VCPI standard.Phar Lap Software, Inc. was founded in April...
286 DOS Extender Lite was also included.
- Visual C++ 1.5 was released in December 1993, included MFC 2.5, and added OLE
Object Linking and Embedding is a technology developed by Microsoft that allows embedding and linking to documents and other objects. For developers, it brought OLE Control eXtension , a way to develop and use custom user interface elements...
2.0 and ODBCIn computing, ODBC is a standard C interface for accessing database management systems . The designers of ODBC aimed to make it independent of database systems and operating systems...
support to MFC. It was the first version of Visual C++ that came only on CD-ROMA CD-ROM is a pre-pressed compact disc that contains data accessible to, but not writable by, a computer for data storage and music playback. The 1985 “Yellow Book” standard developed by Sony and Philips adapted the format to hold any form of binary data....
.
- Visual C++ 1.51 and 1.52 were available as part of a subscription service.
- Visual C++ 1.52b is similar to 1.52, but does not include the Control Development Kit.
- Visual C++ 1.52c was a patched version of 1.5. It is the last, and arguably most popular, development platform for Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
3.x. It is available through Microsoft Developer NetworkThe Microsoft Developer Network is the portion of Microsoft responsible for managing the firm's relationship with developers and testers: hardware developers interested in the operating system , developers standing on the various OS platforms, developers using the API and scripting languages of...
.
32-bit versions
Visual C++ 1.0 (original name:
Visual C++ 32-bit Edition) was the first version for 32-bit development. Although released when 16-bit 1.5 was available, it did not include support for OLE2 and ODBC. It was also available in a bundle called
Visual C++ 16/32-bit Suite, which included Visual C++ 1.5.
Visual C++ 2.0, which included MFC 3.0, was the first version to be 32-bit only. In many ways, this version was ahead of its time, since
Windows 95Windows 95 is a consumer-oriented graphical user interface-based operating system. It was released on August 24, 1995 by Microsoft, and was a significant progression from the company's previous Windows products...
, then codenamed "Chicago", was not yet released, and
Windows NTWindows NT is a family of operating systems produced by Microsoft, the first version of which was released in July 1993. It was a powerful high-level-language-based, processor-independent, multiprocessing, multiuser operating system with features comparable to Unix. It was intended to complement...
had only a small market share. As a result, this release was almost a "lost generation". Microsoft included and updated Visual C++ 1.5 as part of the 2.x releases up to 2.1, which included Visual C++ 1.52, and both 16-bit and 32-bit version of the Control Development Kit (CDK) were included. Visual C++ 2.x also supported
Win32sWin32s is a 32-bit application runtime environment for the Microsoft Windows 3.1 and 3.11 operating systems. It allowed some 32-bit applications to run on the 16-bit operating system using call thunks.- Concept and Characteristics :...
development. It is available through
Microsoft Developer NetworkThe Microsoft Developer Network is the portion of Microsoft responsible for managing the firm's relationship with developers and testers: hardware developers interested in the operating system , developers standing on the various OS platforms, developers using the API and scripting languages of...
. There was a Visual C++ 2.0 RISC Edition for
MIPSMIPS is a reduced instruction set computer instruction set architecture developed by MIPS Technologies . The early MIPS architectures were 32-bit, and later versions were 64-bit...
and
AlphaAlpha, originally known as Alpha AXP, is a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations. Alpha was implemented in microprocessors...
processors, as well as a cross-platform edition for the
MacintoshThe Macintosh , or Mac, is a series of several lines of personal computers designed, developed, and marketed by Apple Inc. The first Macintosh was introduced by Apple's then-chairman Steve Jobs on January 24, 1984; it was the first commercially successful personal computer to feature a mouse and a...
(68000 instruction set).
-
- Visual C++ 2.1 and 2.2 were updates for 2.0 available through subscription.Visual C++ 4.0, which included MFC 4.0, was designed for Windows 95 and Windows NT. To allow support of legacy (Windows 3.x/DOS) projects, 4.0 came bundled with the Visual C++ 1.52 installation CD. Updates available through subscription included Visual C++ 4.1, which came with the Microsoft Game SDK (later released separately as the DirectX SDK), and Visual C++ 4.2. Version number 3.0 was skipped to achieve version number parity between Visual C++ 4.0 and MFC 4.0.Visual C++ 4.2 did not support Windows 3.x (Win32s
Win32s is a 32-bit application runtime environment for the Microsoft Windows 3.1 and 3.11 operating systems. It allowed some 32-bit applications to run on the 16-bit operating system using call thunks.- Concept and Characteristics :...
) development. This was the final version with a cross-platform edition for the MacintoshThe Macintosh , or Mac, is a series of several lines of personal computers designed, developed, and marketed by Apple Inc. The first Macintosh was introduced by Apple's then-chairman Steve Jobs on January 24, 1984; it was the first commercially successful personal computer to feature a mouse and a...
available and it differed from the 2.x version in that it also allowed compilation for the PowerPCPowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...
instruction set.Visual C++ 5.0, which included MFC 4.21, was a major upgrade from 4.2. Available in four editions:
- Learning
- Professional
- Enterprise
- RISCVisual C++ 6.0 (commonly known as VC6), which included MFC 6.0, was released in 1998. The release was somewhat controversial since it did not include an expected update to MFC. Visual C++ 6.0 is still quite popular and often used to maintain legacy projects. There are, however, issues with this version under Windows XP, especially under the debugging mode (for example, the values of static variables do not display). The debugging issues can be solved with a patch called the "Visual C++ 6.0 Processor Pack".Visual C++ .NET 2002 (known also as Visual C++ 7.0), which included MFC 7.0, was released in 2002 with support for link time code generation and debugging runtime checks, .NET 1.0, and Visual C# and Managed C++
Managed Extensions for C++ or just Managed C++ is a now deprecated Microsoft set of deviations from C++, including grammatical and syntactic extensions, keywords and attributes, to bring the C++ syntax and language to the .NET Framework...
. The new user interface used many of the hot keys and conventions of Visual BasicVisual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model...
, which accounted for some of its unpopularity among C++ developers.
- Visual C++ .NET 2003 (known also as Visual C++ 7.1), which included MFC 7.1, was released in 2003 along with.NET 1.1 and was a major upgrade to Visual C++ .NET 2002. It was considered a patch to Visual C++ .NET 2002. Accordingly, the English language upgrade version of Visual Studio .NET 2003 shipped for minimal cost to owners of the English language version of Visual Studio .NET 2002. This was the last version to support Windows 95 and NT 4.0 as a target.
- eMbedded Visual C++ in various versions was used to develop for some versions of the Windows CE
Microsoft Windows CE is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows...
operating system. Initially it replaced a development environment consisting of tools added onto Visual C++ 6.0. eMbedded Visual C++ was replaced as a separate development environment by Microsoft Visual Studio 2005Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all...
.Visual C++ 2005 (known also as Visual C++ 8.0), which included MFC 8.0, was released in November 2005. This version supports .NET 2.0 and dropped Managed C++ for C++/CLIC++/CLI is Microsoft's language specification intended to supersede Managed Extensions for C++. It is a complete revision that aims to simplify the older Managed C++ syntax . C++/CLI is standardized by Ecma as ECMA-372...
. Managed C++ for CLI is still available via compiler options though. It also introduced OpenMPOpenMP is an API that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most processor architectures and operating systems, including Linux, Unix, AIX, Solaris, Mac OS X, and Microsoft Windows platforms...
. With Visual C++ 2005, Microsoft also introduced Team Foundation ServerTeam Foundation Server is a Microsoft product offering source control, data collection, reporting, and project tracking, and is intended for collaborative software development projects...
. Visual C++ 8.0 has problems compiling MFC AppWizard projects that were created using Visual Studio 6.0, so maintenance of legacy projects can be continued with the original IDE if rewriting was not feasible. Visual C++ 2005 is the last version to be able to target Windows 98Windows 98 is a graphical operating system by Microsoft. It is the second major release in the Windows 9x line of operating systems. It was released to manufacturing on 15 May 1998 and to retail on 25 June 1998. Windows 98 is the successor to Windows 95. Like its predecessor, it is a hybrid...
and Windows MeWindows Millennium Edition, or Windows Me , is a graphical operating system released on September 14, 2000 by Microsoft, and was the last operating system released in the Windows 9x series. Support for Windows Me ended on July 11, 2006....
.
- SP1 version also available in Microsoft Windows SDK Update for Windows Vista. Version number: 14.00.50727.762Visual C++ 2008 (known also as Visual C++ 9.0) was released in November 2007. This version supports .NET 3.5. Managed C++ for CLI is still available via compiler options. By default, all applications compiled against the Visual C++ 2008 Runtimes (static and dynamic linking) will only work under Windows 2000 and later. A feature pack released for VC9, later included into SP1, added support for C++ TR1 library extensions.
- SP1 version also available in Microsoft Windows SDK for Windows 7. Version number: 15.00.30729.01Visual C++ 2010 (known also as Visual C++ 10.0) was released on April 12, 2010, and it is currently the latest stable release. It uses a SQL Server Compact
Microsoft SQL Server Compact is a compact relational database produced by Microsoft for applications that run on mobile devices and desktops. Prior to the introduction of the desktop platform, it was known as SQL Server for Windows CE and SQL Server Mobile Edition...
database to store information about the source code, including IntelliSenseIntelliSense is Microsoft's implementation of autocompletion, best known for its use in the Microsoft Visual Studio integrated development environment...
information, for better IntelliSense and code-completion support. (However, Visual C++ 2010 does not support Intellisense for C++/CLI.) This version adds a modern C++ parallel computing library called the Parallel Patterns LibraryThe Parallel Patterns Library is a Microsoft library designed for use by native C++ developers that provides features for multicore programming. It was first bundled with Visual Studio 2010...
, partial support for C++0xC++11, also formerly known as C++0x, is the name of the most recent iteration of the C++ programming language, replacing C++03, approved by the ISO as of 12 August 2011...
, significantly improved IntelliSenseIntelliSense is Microsoft's implementation of autocompletion, best known for its use in the Microsoft Visual Studio integrated development environment...
, and performance improvements to both the compiler and generated code. This version is built around .NET 4.0, but supports compiling to machine codeMachine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...
. The partial C++0x support mainly consists of six compiler features (lambdas, rvalue references, auto, decltype, static_assert, nullptr), and some library features (e.g. moving the TR1 components from std::tr1 namespace directly to std namespace). Variadic templates were also considered, but delayed until some future version due to lower priority which stemmed from the fact that unlike other costly-to-implement features (lambda, rvalue references), this one would benefit only a minority of library writers than the majority of compiler end users. By default, all applications compiled against the Visual C++ 2010 Runtimes will only work under Windows XP SP2 and later.
- Beta 2 version number: 16.00.21003.01 (this is the version of compiler; the IDE itself has version number 16.00.21006.01)
- RC version number: 16.00.30128.01
- RTM version, also available in Windows SDK for Windows 7 and .NET Framework 4 (WinSdk v7.1). Version number: 16.00.30319.01
- SP1 version, also available in KB2519277 update to Windows SDK v7.1: 16.00.40219.01
64-bit versions
Visual Studio 2005 Standard and Professional editions have
x86-64x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...
compiler support, and Visual Studio 2008 Team Suite supports both
x86-64x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...
and
IA-64Itanium is a family of 64-bit Intel microprocessors that implement the Intel Itanium architecture . Intel markets the processors for enterprise servers and high-performance computing systems...
. Prior to Visual C++ 2005, the
Platform SDKMicrosoft Windows SDK, Platform SDK, and .NET Framework SDK are software development kits from Microsoft that contain header files, libraries, samples, documentation and tools required to develop applications for Microsoft Windows and .NET Framework....
was the only way for programmers to develop 64-bit Windows applications. The SDK included both a compiler and a Visual C++ 6.0 library for the IA64-target. Programmers who wanted the 64-bit versions of the Visual C++ .NET 2003 libraries (which are no longer available) had to contact .
Current editions
There are six current versions of Visual C++ available:
- Legacy Microsoft Visual C++ 2008 Express Edition
- Microsoft Visual C++ 2010 Express Edition
Microsoft Visual Studio Express is a set of freeware integrated development environments developed by Microsoft that are lightweight versions of the Microsoft Visual Studio product line. Express Editions were conceived beginning with Visual Studio 2005...
(available as a free download at the MSDN site)
- Microsoft Visual Studio 2010 Professional
- Microsoft Visual Studio 2010 Team Foundation
- Microsoft Visual Studio 2010 Premium
- Microsoft Visual Studio 2010 Ultimate
Visual C++ is included in Visual Studio.
Issues
Visual C++ ships with different versions of C Runtime libraries. This means the user can compile their code with any of the available libraries. However this can cause some problems when using different components(
DLLsDynamic-link library , or DLL, is Microsoft's implementation of the shared library concept in the Microsoft Windows and OS/2 operating systems...
,
EXEsEXE is the common filename extension denoting an executable file in the DOS, OpenVMS, Microsoft Windows, Symbian, and OS/2 operating systems....
) in the same program. A typical example is a program using different libraries. The user should use the same
C Run-TimeThe C Standard Library is the standard library for the programming language C, as specified in the ANSI C standard.. It was developed at the same time as the C POSIX library, which is basically a superset of it...
for all the program's components unless the implications are understood. Microsoft recommends using the
multithreadedIn computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
, dynamic link library (
/MD or
/MDd compiler option) to avoid possible problems.
The compiler does not support
C99C99 is a modern dialect of the C programming language. It extends the previous version with new linguistic and library features, and helps implementations make better use of available computer hardware and compiler technology.-History:...
, the current standard for the C programming language.
External links