Microsoft Visual C++ (often abbreviated to. For many years the compiler's support for that language conformed only to the original edition of the C standard.

  1. Visual Standard Work
  2. C++ Standard Pdf

2017 / March 7, 2017; 10 months ago ( 2017-03-07) Written in, and Available in English, Chinese (Simplified & Traditional), Czech, French, German, Italian, Japanese, Korean, Polish, Portuguese (Brazilian), Russian, Spanish, Turkish and Website Microsoft Visual C (often abbreviated to MSVC) is an (IDE) product from for the, and. MSVC is; it was originally a standalone product but later became a part of and made available in both and forms. It features tools for and C code, especially code written for, and.

Many require 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 that many applications use. Contents.

History The predecessor to Visual C was called Microsoft C/C. There was also a Microsoft 2.5 and a Microsoft QuickC for Windows 1.0. The Visual C is still known as Microsoft C/C and as of the release of Visual C 2015 Update 2, is on version 8. 16-bit versions. Microsoft C 1.0, based on, was Microsoft's first C product in 1983. C 2.0 added large model support. C 3.0 was the first version developed inside Microsoft.

This version intended compatibility with K&R and the later ANSI standard. It was being used inside Microsoft (for and development) in early 1984. It shipped as a product in 1985.

C 4.0 added optimizations and, a source level debugger. C 5.0 added loop optimizations and Huge Model ( bigger than 64k) support. Microsoft and the first 32 bit compiler for 80386 were also part of this project.

C 5.1 released in 1988 allowed compiling programs for OS/2 1.x. 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.

Added built-in support for C and MFC (Microsoft Foundation Class Library) 1.0. Visual C 1.0, which included 2.0, was the first version of Visual C, released in February 1993. It was 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 286 DOS Extender Lite was also included. Visual C 1.5 was released in December 1993, included MFC 2.5, and added 2.0 and support to MFC.

It was the first version of Visual C that came only on. 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 3.x. It is available through. Strictly 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, then codenamed 'Chicago', was not yet released, and 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 development.

It is available through. There was a Visual C 2.0 RISC Edition for and processors, as well as a cross-platform edition for the ( instruction set). Visual C 2.1 and 2.2 were updates for 2.0 available through subscription. Visual C 4.0, released on 1995-12-11, introduced the Developer Studio IDE. Its then-novel tiled layout of non-overlapping panels—navigation panel, combination editor/source level debugger panel, and console output panel —continues through the product line (as of 2013).

Visual C 4.0 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 development. This was the final version with a cross-platform edition for the available and it differed from the 2.x version in that it also allowed compilation for the instruction set.

Visual C 5.0, which included MFC 4.21 and was released 1997-04-28, was a major upgrade from 4.2. Available in four editions: Learning, Professional, Enterprise, and RISC. Visual 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'.

Version number:. Visual C.NET 2002 (also known 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 and. The new user interface used many of the hot keys and conventions of, which accounted for some of its unpopularity among C developers. Version number:. Visual C.NET 2003 (also known 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.

Version number:. eMbedded Visual C in various versions was used to develop for some versions of the 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. 32-bit and 64-bit versions. Visual C 2005 (also known as Visual C 8.0), which included MFC 8.0, was released in November 2005. This version supports.NET 2.0 and includes a new version of C targeted to the.NET framework with the purpose of replacing the previous version.

Managed C for CLI is still available via compiler options, though. It also introduced. With Visual C 2005, Microsoft also introduced. 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 is not feasible. Visual C 2005 is the last version able to target and. SP1 version (7.762) is also available in. Visual C 2008 (also known 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 in SP1, added support for C library extensions. SP1 version (9.01) is also available in. Some versions of Visual C supported. Visual C 2010 (also known as Visual C 10.0) was released on April 12, 2010. It uses a database to store information about the source code, including information, for better IntelliSense and code-completion support.

However, Visual C 2010 does not support Intellisense for C/CLI. This version adds a C parallel computing library called the, partial support for, significantly improved IntelliSense based on the front end, and performance improvements to both the compiler and generated code. This version is built on.NET 4.0, but supports compiling to. The partial C11 support mainly consists of six compiler features: lambdas, rvalue references, auto, decltype, staticassert, and nullptr. C11 also supports library features (e.g., moving the TR1 components from std::tr1 namespace directly to std namespace). Were also considered, but delayed until some future version due to having a lower priority, which stemmed from the fact that, unlike other costly-to-implement features (lambda, rvalue references), variadic templates would benefit only a minority of library writers rather than the majority of compiler end users.

By default, all applications compiled against Visual C 2010 Runtimes only work on Windows XP SP2 and later. The RTM version (9) is also available in (WinSDK v7.1). SP1 version (9) is available as part of Visual Studio 2010 Service Pack 1 or through the Microsoft Visual C 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1. Visual C 2012 (also known as Visual C 11.0) was released on August 15, 2012.

It features improved C11 support, and support for development. Visual C 2013 (also known as Visual C 12.0) was released on October 17, 2013. It features further C11 and support, and introduces a SDK.

Visual Standard Work

Visual C 2015 (also known as Visual C 14.0) was released on July 20, 2015. It features improved C11/14/17 support. 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. The function in question was removed from the Visual C CRT static libraries in Visual Studio 2015 Update 3. Visual C 2017 (also known as Visual C 14.1) was released on March 7, 2017.

Compatibility ABI The Visual C compiler have historically changed between major compiler releases. This is especially the case for STL containers, where container sizes have varied a lot between compiler releases.

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 or 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. This means users can compile their code with any of the available libraries. However, this can cause some problems when using different components (, ) in the same program. A typical example is a program using different.

The user should use the same for all the program's components unless the implications are understood. Microsoft recommends using the, dynamic link library (/MD or /MDd compiler option) to avoid possible problems. C99 Although the product originated as an IDE for the programming language, for many years the compiler's support for that language conformed only to the original edition of the, dating from 1989. The later revisions of the standard, and, were not supported at all until Visual C 2013, which added support for various C99 features in its C mode (including designated initializers, compound literals, and the Bool type), though it is still not complete. 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. References.

February 22, 1993. Lextrait, Vincent (January 2010). Archived from on 30 May 2012.

Retrieved 14 March 2010. Retrieved 2012-11-18. Ladd, Scott Robert (August 1, 1990). Retrieved from.

June 21, 1993. March 1, 1993. November 8, 1993. July 19, 1993.

April 4, 1994. Archived from on 2005-08-14. Toth, Viktor (1996). Retrieved 26 July 2013. Archived from on April 27, 1999.

Archived from on April 27, 1999. Archived from on April 17, 1999. Archived from on April 29, 1999. This page stresses that Users must also be running Windows 98, Windows NT 4.0, or Windows 2000.

Retrieved from. Douglas Boling: Programming Microsoft Windows CE.NET, Third Edition Microsoft Press; 3rd edition (June 25, 2003) Paperback: 1264 pages - 2013-02-11 at. Visual C Team Blog.

Retrieved March 12, 2008. Retrieved March 13, 2011. Visual C Team Blog. Visual C Team Blog. Microsoft Windows SDK Blog.

Retrieved September 20, 2015. Retrieved September 20, 2015. Eric Battalio (July 20, 2015).

Visual C Team Blog. Lavavej (June 19, 2015).

Visual C Team Blog. Retrieved 2016-08-17. Microsoft MSDN:. Microsoft MSDN:.

Microsoft MSDN:. Microsoft forum:. ^. Microsoft Connect. Microsoft Developer Network. Pat Brenner (July 19, 2013). Visual C Team Blog.

Microsoft Developer Network. External links., September 2015.

I keep reading about C99 and C11 and all these totally sweet things that are getting added to the language standard that might be nice to use someday. However, we currently languish in the land of writing C in Visual Studio.

Will any of the new stuff in the standard ever get added to visual studio, or is Microsoft more interested in adding new C# variants to do that? The lost templar. Edit: In addition to the accepted answer, I found the Visual C team blog: And specifically, this post in it: Very useful.

MS has a series of public replies to this, most of them blaming their users. Like this one: Now, the Visual C compiler team receives the occasionally question as to why we haven’t implemented C99.

Visual C StandardVisual standard work instructions

It’s really based on interest from our users. Where we’ve received many requests for certain C99 features, we’ve tried to implement them (or analogues). A couple examples are variadic macros, long long, pragma, FUNCTION, and restrict. If there are other C99 features that you’d find useful in your work, let us know!

We don’t hear much from our C users, so speak up and make yourselves heard Hi: unfortunately the overwhelming feadback we get from the majority of our users is that they would prefer that we focus on C-0x instead of on C-99. We have 'cherry-picked' certain popular C-99 features (variadic macros, long long) but beyond this we are unlikely to do much more in the C-99 space (at least in the short-term). Jonathan Caves Visual C Compiler Team. This is a pretty sad state of affairs, but also makes sense if you suspect MS wants to lock users in: it makes it very hard to port modern gcc-based code into MSVC, which at least I find extremely painful. A workaround exists, though: Note that Intel is much more enlightened on this. The Intel C compiler can handle C99 code and even has the same flags as gcc, making it much easier to port code between platforms. Also, the Intel compiler works in visual studio.

So by scrapping MS COMPILER you can still use the MS IDE that you seem to think has some kind of value, and use C99 to your hearts content. A more sensible approach is honestly to move over to Intel CC or gcc, and use Eclipse for your programming environment.

Portability of code across Windows-Linux-Solaris-AIX-etc is usually important in my experience, and that is not at all supported by MS tools, unfortunately. Herb Sutter is both the chair and a very active member of C standardisation comitee, as well as software architect on Visual Studio for Microsoft. He is among the author of the new C memory model standardised for C0x. For example, the following papers: have his name on it. So I guess the inclusion on Windows of C0x is assured as long as H.

C++ Standard Pdf

Sutter remains at Microsoft. As for C99 only partly included in Visual Studio, I guess this is a question of priorities. Most interesting C99 features are already present in C (inlining, variable declaration anywhere, // comments, etc.) and probably already usable in C in Visual Studio (If only doing C code within the C compiler). See my answer for a more complete discussion about C99 features in C. C99 increases the divergence between C and C by adding features already existing in C, but in an incompatible way (sorry, but the boolean complex implementation in C99 is laughable, at best.

See for more information). The C community on Windows seems non-existent or not important enough to be acknowledged. The C community on Windows seems too important to be ignored.NET is the way Microsoft wants people to program on Windows. This means C#, VB.NET, perhaps C/CLI. So, would I be Microsoft, why would I implement features few people will ever use when the same features are already offered in more community active languages already used by most people? C0x will be included, as extention of VS 2008, or on the next generation (generations?) of Visual Studio. The C99 features not already implemented won't be in the next years, unless something dramatic happens (a country full of C99 developers appears out of nowhere?) Edit 2011-04-14 Apparently, the 'country full of C99 developers' already exist: ^^ Still, the last comment at: is clear enough, I guess.

Edit 2012-05-03 Herb Sutter made it clear that:. Our primary goal is to support 'most of C99/C11 that is a subset of ISO C98/C11.' . We also for historical reasons ship a C90 compiler which accepts (only) C90 and not C. We do not plan to support ISO C features that are not part of either C90 or ISO C. The blog post add links and further explanations for those decisions.

@paercebal: you're entitled to that viewpoint, but there's nothing in C that would entice me to give up hexadecimal floating-point literals. This is exactly my point. Of course C programmers don't care about C99 features; that's probably why they're C programmers.

Conversely, there's a whole world of C programmers out there who don't care at all for C features, and just want Microsoft to provide a C compiler that at least tries to adhere to the standard like everyone else's does. – Apr 15 '11 at 0:19. @paercebal: 'equivalents' are useless. There are millions of lines of portable C code that work just fine on every other platform. Are you suggesting that they be rewritten?

The C99 user community is sufficiently large that every other major compiler vendor at least attempts to deliver compatibility: IBM, HP, Apple, Intel, GNU, Sun, ARM, innumerable embedded device compilers, etc. C99 may not be important to Windows programmers, but Windows programs represent a tiny fraction of the total code written.

– Apr 15 '11 at 19:03. @sdfqwerqaz1, see the comment from STL: 'the compiler and library teams will consider them on a case-by-case basis, but our main priority is C conformance. For example, since C11/14 incorporate the C99 Standard Library by reference, 2015 Preview fully supports the C99 Standard Library (with the only omissions being tgmath.h, which requires C compiler magic and is not relevant to C which has overloading, and CXLIMITEDRANGE/FPCONTRACT which also require compiler support)'. – Jan 30 '15 at 9:47. I've been involved in the ISO C work (2000-2005), and Microsoft made significant contributions to that language. There's no doubt they will work on C0x, but they'll need a bit more time than say Intel.

Micosoft has to deal with a larger codebase that often uses their proprietary extensions. This simply makes for a longer testfase. Yet, they will support most of C0x eventually (export still isn't loved though, or so I understand). When it comes to ISO C, the people working on standard are not representative for Microsofts market. Microsofts customers can use C98 if they're just looking for a better C. So why would Microsoft spend money on C99? Sure, Microsoft cherry-picked parts, but that's sane business.

They'd need those for C0x anyway, so why wait? MSVC support for C is unfortunately very lacking. It only supports the portion of C99 that is a subset of C. Which means that, for example, it is physically impossible to compile ffmpeg or its libav. libraries in MSVC, because they use many C99 features such as named struct elements. This is made worse by the fact that libavcodec also requires a compiler that maintains stack alignment, which MSVC doesn't. I work on x264, which unlike ffmpeg does make an effort to support MSVC, though doing so has often been a nightmare in and of itself.

It doesn't maintain stack alignment even if you explicitly pass the highest function call through an explicit assembly-based stack alignment function, so all functions that require an aligned stack have to be disabled. Its also been very annoying that I cannot use vararrays either; perhaps this is for the best, since apparently GCC massively pessimizes them performance-wise.

Updated information on this: There is now (10 Nov 2008) a 'Community Tech Preview' (CTP) of VS2010 which contains a preview of VC10 that has some parts of C0x implemented (note that VC10 will not have the full set of C0x changes implemented even when VC10 is released): Some details on what's new in the VC10 CTP:. As noted in the above article, 'The Visual C compiler in the Microsoft Visual Studio 2010 September Community Technology Preview (CTP) contains support for four C0x language features, namely:'.

lambdas,. auto,. staticassert,.

rvalue references.