Visual C++

Visual C++
Developer(s) Microsoft
Initial release February 1993 (1993-02)[1]
Stable release
2015 / July 20, 2015 (2015-07-20)
Written in C++[2]
Operating system Windows
Platform IA-32, x86-64 and Itanium 2
Available in English, Chinese, French, Japanese, Korean, German, and likely others
Type IDE
License Trialware and freeware
Website msdn.microsoft.com/en-us/library/60k1461a.aspx

Microsoft Visual C++ (often abbreviated as MSVC or VC++) is an integrated development environment (IDE) product from Microsoft for the C, C++, and C++/CLI programming languages. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for Windows API, DirectX and .NET Framework.

Many applications require redistributable Visual C++ packages to function correctly. These packages are often installed independently of applications, allowing multiple applications to make use of the package while only having to install it once. These Visual C++ redistributable and runtime packages are mostly installed for standard libraries that many applications use.[3]

History

The predecessor to Visual C++ was called Microsoft C/C++. There was also a Microsoft QuickC 2.5 and a Microsoft QuickC for Windows 1.0. The Visual C++ compiler is still known as Microsoft C/C++ and as of the release of Visual C++ 2015 Update 2, is on version 19.00.23918.

16-bit versions

Strictly 32-bit versions

32-bit and 64-bit versions

Compatibility

ABI

The Visual C++ compiler ABI have historically changed between major compiler releases.[40] This is especially the case for STL containers, where container sizes have varied a lot between compiler releases.[41] Microsoft therefore recommends against using C++ interfaces at module boundaries when one wants to enable client code compiled using a different compiler version. Instead of C++, Microsoft recommends using C[42] or COM[43] interfaces, which are designed to have a stable ABI between compiler releases.

C runtime libraries

Visual C++ ships with different versions of C runtime libraries.[44] This means users can compile their code with any of the available libraries. However, this can cause some problems when using different components (DLLs, EXEs) in the same program. A typical example is a program using different libraries. The user should use the same C Run-Time for all the program's components unless the implications are understood. Microsoft recommends using the multithreaded, dynamic link library (/MD or /MDd compiler option) to avoid possible problems.[44]

C99

Although the product originated as an IDE for the C programming language, for many years the compiler's support for that language conformed only to the original edition of the C standard, dating from 1989. The later revisions of the standard, C99 and C11, were not supported at all[45] until Visual C++ 2012, which added support for various C99 features in its C mode (including designated initializers, compound literals, and the _Bool type). Visual C++ 2013 significantly improved the C99 support, though it is still not complete.[46] Visual C++ 2015 further improves the C99 support, with full support of the C99 Standard Library, except for features that require C99 language features not yet supported by the compiler.[47]

Common MSVC version

The predefined macro _MSC_VER indicates the major and minor version numbers of the Visual C++ compiler. The macro's value is an integer literal in which the last two digits indicate the minor version number and the preceding digits indicate the major version number.

Here are values of _MSC_VER for various versions of the Visual C++ compiler:

MSVC++ 5.0  _MSC_VER == 1100
MSVC++ 6.0  _MSC_VER == 1200
MSVC++ 7.0  _MSC_VER == 1300
MSVC++ 7.1  _MSC_VER == 1310 (Visual Studio 2003)
MSVC++ 8.0  _MSC_VER == 1400 (Visual Studio 2005)
MSVC++ 9.0  _MSC_VER == 1500 (Visual Studio 2008)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)

These version numbers refer to the major version number of Visual Studio, which can be seen inside the Visual Studio "About" box. It does not refer to the year in the name. A thorough list is available.[48]

Controversy

Without any announcement from Microsoft, Visual Studio 2015 Update 2 started generating telemetry calls in compiled binaries. After some users contacted Microsoft about this problem, Microsoft said they would remove these telemetry calls when compiling with the future Visual Studio 2015 Update 3.[49][50] The function in question was removed from the Visual C++ CRT static libraries in Visual Studio 2015 Update 3.

See also

References

  1. 1 2 "Visual C++ adds Windows support". InfoWorld. February 22, 1993. p. 17.
  2. Lextrait, Vincent (January 2010). "The Programming Languages Beacon, v10.0". Retrieved 14 March 2010.
  3. "Do I need these Microsoft Visual C++ redistributables?". Ask Leo!. Retrieved 2012-11-18.
  4. Ladd, Scott Robert (August 1, 1990). "Optimizing With Microsoft C 6.0".
  5. Retrieved from http://support.microsoft.com/kb/196831.
  6. 1 2 "Visual C++ is a strong development tool". InfoWorld. June 21, 1993. p. 94.
  7. "Rival DOS Extenders debut at show". InfoWorld. March 1, 1993. p. 18.
  8. "Visual C++ 1.5 integrates OLE, ODBC". InfoWorld. November 8, 1993. p. 5.
  9. "Microsoft set to prerelease 32-bit Visual C++". InfoWorld. July 19, 1993. p. 12.
  10. "C++ IDEs evolve". InfoWorld. April 4, 1994. p. 79.
  11. "Microsoft Visual C++ Strategy".
  12. 1 2 "Obsolete Products".
  13. Toth, Viktor (1996). "1". Visual C++ 4.0 unleashed. Indianapolis: SAMS Publishing. ISBN 9780672308741. Retrieved 26 July 2013.
  14. "History of Visual Studio (Part 3)".
  15. "Major Changes from Visual C++ 4.0 to 4.2".
  16. "Major Changes from Visual C++ 4.2 to 5.0".
  17. "Microsoft Visual C++ 5.0 Learning Edition". Archived from the original on April 27, 1999.
  18. "Microsoft Visual C++ 5.0 Professional Edition". Archived from the original on April 27, 1999.
  19. "Microsoft Visual C++ 5.0 Enterprise Edition". Archived from the original on April 17, 1999.
  20. "Microsoft Visual C++ 5.0 RISC Edition". Archived from the original on April 29, 1999.
  21. "Major Changes from Visual C++ 5.0 to 6.0".
  22. This page stresses that Users must also be running Windows 98, Windows NT 4.0, or Windows 2000. Retrieved from http://msdn2.microsoft.com/en-us/vstudio/aa718349.aspx.
  23. Douglas Boling :Programming Microsoft Windows CE .NET, Third Edition Microsoft Press; 3rd edition (June 25, 2003) Paperback: 1264 pages ISBN 978-0735618848 - Companion CD with Microsoft eMbedded Visual C++ 4.0 Service Pack 2
  24. How to: Modify WINVER and _WIN32_WINNT
  25. Breaking Changes
  26. Windows Platforms (CRT)
  27. "Visual C++ 2008 Breaking Changes".
  28. Visual C++ Team Blog. "IntelliSense, part 2: The Future". Retrieved March 12, 2008.
  29. "Why IntelliSense is not supported for C++/CLI in Visual Studio 2010". Retrieved March 13, 2011.
  30. Visual C++ Team Blog. "Rebuilding Intellisense".
  31. Visual C++ Team Blog. "Visual C++ Code Generation in Visual Studio 2010".
  32. "C++0x Core Language Features In VC10: The Table".
  33. "Stephan T. Lavavej: Everything you ever wanted to know about nullptr".
  34. Microsoft Windows SDK Blog. "Released: Windows SDK for Windows 7 and .NET Framework 4".
  35. FIX: Visual C++ compilers are removed when you upgrade Visual Studio 2010 Professional or Visual Studio 2010 Express to Visual Studio 2010 SP1 if Windows SDK v7.1 is installed
  36. "What's New for Visual C++ in Visual Studio 2012". Microsoft Developer Network. Microsoft. Retrieved September 20, 2015.
  37. "What's New for Visual C++ in Visual Studio 2013". Microsoft Developer Network. Miicrosoft. Retrieved September 20, 2015.
  38. Eric Battalio (July 20, 2015). "Visual Studio 2015 RTM Now Available". Visual C++ Team Blog. Microsoft.
  39. Stephan T. Lavavej (June 19, 2015). "C++11/14/17 Features In VS 2015 RTM". Visual C++ Team Blog. Microsoft.
  40. Microsoft MSDN: Breaking Changes in Visual C++
  41. Microsoft MSDN: Containers (Modern C++)
  42. Microsoft MSDN: Portability At ABI Boundaries (Modern C++)
  43. Microsoft forum: Binary compatibility across Visual C++ versions
  44. 1 2 C Run-Time Libraries
  45. "C99 support". Microsoft Connect.
  46. Pat Brenner (July 19, 2013). "C99 library support in Visual Studio 2013". Visual C++ Team Blog. Microsoft.
  47. "What's New for Visual C++ in Visual Studio 2015". Microsoft Developer Network. Microsoft.
  48. "Pre-defined Compiler Macros / Wiki / Compilers". sourceforge.net. Retrieved 2016-02-11.
  49. Reviewing Microsoft's Automatic Insertion of Telemetry into C++ Binaries
  50. "Visual Studio adding telemetry function calls to binary? • /r/cpp". reddit. Retrieved 2016-08-17.
This article is issued from Wikipedia - version of the 11/22/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.