Start Learning

Looking to learn what Microsoft Visual C++ is and why organizations use it? Then this article is for you. We’ll explain the difference between C++ and Visual C++, cover which versions of Visual C++ are currently supported (and which one you should pick for a new project) and talk about what the Visual C++ Redistributable actually is. Scroll to the bottom for a list of resources that will help you learn even more about Visual C++ development.

What is Microsoft Visual C++?

You might already know that C++ is an object-oriented programming language. Visual C++ isn’t actually a separate language in itself. Instead, it’s a set of libraries and development tools for C++, tools that will help you create Windows desktop and server applications, Universal Windows Platform (UWP) projects for desktop, mobile and HoloLens, and .NET applications with C++.
Microsoft Visual C++ is available as part of Visual Studio, Microsoft’s integrated development environment (IDE). A powerful code editor, Visual Studio provides many useful functions for navigating large codebases; within Visual Studio, Visual C++itself consists of a C++ compiler and a set of C++ libraries and tools.

Why not just use C++?

If you are a fan of LEGO, you likely enjoy the act of quickly building something new using parts from different LEGO sets. Reusing pre-built elements is faster than building from scratch, and that means you can prototype quickly and see what works and what doesn’t. It also allows you to focus on the aspects you enjoy, for example, on the aesthetic of the finished LEGO masterpiece.
Using Visual C++ is like having many pre-built sets of LEGOs. When writing, say, a Windows desktop application, you usually need to create an interface for your app and to model several user interactions. Doing that in plain C++ would mean creating all the functionality from scratch, like building the Starship Enterprise using only basic LEGO building blocks. But with Visual C++, you already have many reusable components available to you, for everything from building interfaces to parsing JSON configs, and that speeds up overall development—as if your LEGO creation already had a spacecraft cabin and a set of engines pre-built and ready to go.
Keep in mind that Visual C++ only works on Windows platforms (including UWP), so if you’d like to write code that is portable across operating systems, you should instead consider using regular C++ with cross-platform libraries.

What functionality is available in the Visual C++ libraries?

The Visual C++ building blocks that follow can be useful and, indeed, more efficient than plain C++ if you are creating desktop or server applications for Windows or UWP.

Concurrency runtime

The Concurrency runtime contains functions that you can use to create robust, error-free and performant parallel applications. Within the runtime you’ll find functions and classes for things like task parallelism that integrate natively with the Windows thread pool, and parallel algorithms that work well with large data volumes in highly parallel applications. The Concurrency runtime also features a set of parallel containers and objects that can be safely accessed from multiple application threads in parallel.

Microsoft Foundation Classes(MFC)

The MFC library provides an object-oriented wrapper that will help you quickly create a desktop Windows application and make it easier to create ActiveX controls.

HTTP Client class

The HTTP Client class serves as a convenient and simple way to make HTTP requests in Windows applications and receive and parse HTTP responses.

Windows Internet

The Windows Internet library provides a C++ API for the HTTP and FTP protocols.

Windows HTTP Services

The HTTP Services library can be used server-side in Windows applications to handle receiving and processing HTTP requests at scale.

DirectX

You can use the DirectX library‘s API to create games for the Universal Windows Platform.
These libraries (along with many more) constitute one of the main reasons Visual C++ is so popular within certain industries: when creating Windows-only applications, using Visual C++ libraries is not only more convenient but also makes development teams more productive.

Visual Studio licensing terms

Because Visual C++ is a part of Visual Studio, the licensing terms for Visual Studio also apply to the Visual C++ libraries. For commercial projects, you can use Visual C++ for free as an individual or in teams of 5 or fewer. With bigger teams you’ll have to purchase a Visual Studio license for every developer working on the project. Check out the Visual Studio Community page for more details on the licensing for Visual Studio (and therefore for Visual C++).
Of course, you can write C++ code using Visual Studio without using the Visual C++ libraries. You may simply enjoy using the Visual Studio IDE and won’t mind not having the Visual C++ libraries available for your project in its production environment. In most cases, however, organizations choose to use Visual C++ instead of plain C++ when creating Windows and UWP projects, as it results in faster development times in the long term, not to mention less maintenance.

What is Visual C++ used for?

The Visual C++ libraries are available only for projects that run on Windows or that support the Universal Windows Platform. The Windows operating system is prevalent in many industries, notably healthcare, education, and finance, so you most frequently find Visual C++ used by companies in these sectors.
The StackOverflow Developer Survey from 2019 indicates that more than half of all developers who responded to the survey develop for the Windows platforms. This statistic includes cross-platform applications that can run on Windows as well as other operating systems, but even so it shows how widespread Windows development is in the business world.
Other industries where you can find Windows on desktop, mobile, embedded and IoT devices include automotive, insurance, energy, manufacturing, retail services, media, entertainment and telecommunications. And many companies in these sectors rely on Visual C++ for speeding up their Windows development.

Visual C++ versions

The Visual C++ versions currently supported by Microsoft are as follows:

  • VC++ 10.0 (Visual Studio 2010)
  • VC++ 11.0 (Visual Studio 2012)
  • VC++ 12.0 (Visual Studio 2013)
  • Visual C++ 2015 (Visual Studio 2015)
  • Visual C++ 2017 (Visual Studio 2017)
  • Visual C++ 2019 (Visual Studio 2019)

Newer Visual C++ versions typically include more functionality out of the box and support newer C++ standards, so if you are looking for the right Visual C++ version for your use, you most likely want the newest available version. Visual C++ development environments are installed through the Visual Studio IDE.
Should you need to use multiple Visual C++ versions, you can simply install as many Visual Studio IDE versions side by side as you like. Visual C++ 2015, 2017 and 2019 share identical Visual C++ Redistributable libraries (see below), so if you need to work with those libraries, you need only a single version of the redistributable.

What is the Visual C++ Redistributable?

The Visual C++ Redistributable is a runtime library for Visual C++. Because Visual C++ provides a set of convenience functions otherwise unavailable on a Windows machine, the Redistributable needs to be installed on any computer Visual C++ code will run on in order to make those convenience functions accessible to your applications. The runtime library is available on the Microsoft website free of charge.
In online forums, the Visual C++ Redistributable is infamous for the worry it causes regular Windows users who find themselves running Visual C++ applications on their machines. Each application using the convenience libraries initializes its own Redistributable process, so if you have multiple VC++-reliant applications running at the same time, your Windows task manager will show many VC++ processes. When those applications are doing useful work, they can consume a lot of CPU, and Windows users are frequently surprised to find that Visual C++ libraries have rendered their machines unresponsive.
When Visual C++ Redistributable processes end up taking all available CPU and making a Windows machine impossible to use, frequently the cause comes from a program encountering a problem and, in fact, handling it properly. This might be an error in the application in question or an issue in Windows itself.

How to learn more about Visual C++

If you’d like to become more familiar with Visual C++ and how it works, have a look at the official Visual C++ documentation. Also consider downloading and trying out some of the Visual C++ example projects from Microsoft.

Summary

In this article, we’ve gone through what Visual C++ is, explained the difference between C++ and Visual C++, and shared some details about the industries where you can most frequently find Visual C++ code. We also covered the specifics of the Visual C++ Redistributable and why it sometimes inadvertently becomes a hot topic in online forums.
Want to get started with Visual C++ development? Join our C++ Nanodegree program.

Start Learning

Stephen Welch
Stephen Welch
Stephen is a Content Developer at Udacity and has built the C++ and Self-Driving Car Engineer Nanodegree programs. He started teaching and coding while completing a Ph.D. in mathematics, and has been passionate about engineering education ever since.