Tech News
← Back to articles

A visual history of Visual C++ (2017)

read original related products more articles

A visual history of Visual C++

04 Mar 2017

Visual C++ was Microsoft's implementation of a professional Windows hosted IDE for developing Windows software. From humble beginnings, it's grown into a very versatile, popular, and powerful tool. I used every version of Visual C++ since 1.0, and thought I'd collect some Visual C++ screenshots and comments on these versions.

Visual C++ 1.x

Visual C++ 1.0/1.5 (16-bit) Visual C++ 1.1 (32-bit) Minimum (official) host OS version Windows 3.1 Windows NT 3.1 Minimum (official) target OS version Windows 3.1 Windows NT 3.1/Win32s 1.1 CRT DLL N/A MSVCRT10.DLL

Visual C++ 1.0 was the first release of Visual C++, released in 1993 for 16 bit development. Version 1.5 was released later as a 16 bit development tool, and there was also a Visual C++ 1.1 for 32 bit development, pictured above. These represented Microsoft's first major push into a Windows based IDE for C++ development. Prior to IDEs, Windows development was mainly done with command line compilers and a developer's editor of choice, coupled with a Windows SDK that provided tools for Windows specific problems.

My first experience with these versions was fairly bad: the Windows specific tools were still seperate from the IDE, so the IDE itself represented a Windows editor, and the system required a fair mount of RAM compared to a DOS based solution so performance wasn't great. The main advantage of Visual C++ as opposed to earlier tools is an integrated debugger, which particularly in 16 bit Windows, was a huge advance. Note that 16 bit Windows is a cooperatively multitasked system, so a process cannot be "stopped" to debug it or the system will hang; previous debuggers relied on stopping and debugging all of Windows. Visual C++ would emulate the behavior of a stopped process without actually stopping it, giving the appearance of interactive debugging.

In 32 bit land the world was very different. Visual C++ 1.1 shipped with tools that contained useful bug fixes over the original NT SDK, but the two were very similar. Because NT had a debugging model for processes that was designed, and the SDK shipped with an interactive debugger, the advantages of Visual C++ in 32 bit land was more limited.

16 bit Windows had a very different model to 32 bit Windows with C runtime libraries. Because each process could determine its own memory model and floating point behavior, C runtime libraries were always statically linked into the application. In 32 bit Windows, however, the option of a dynamically linked CRT was created and Visual C++ 1.1 used MSVCRT10.DLL. This choice was a little frustrating for me, since the NT SDK used CRTDLL.DLL which was included with the operating system, whereas MSVCRT10.DLL was not, leaving the developer choosing between buggy tools with simple deployment and fixed tools with painful deployment.

Visual C++ 2

... continue reading