Search notes:

Visual Studio versions

cl version

The version of the compiler (cl) and the linker can be determined like so
C:\> cl   | findstr Version
C:\> link | findstr Version
Visual Studio cl link .NET Framework
VS 6.0 12.00 ? Last one before .NET
VS .NET 2002 (7.0) 13.00 ? 1.0
VS .NET 2003 (7.1) 13.10 ? 1.1
VS 2005 (8.0) 14.00 ? 2.0
VS 2008 (9.0) 15.00 ? 3.5
VS 2010 (10.0) 16.00 10 4.0
VS 2012 (11.0) 17.00 ? 4.5
VS 2013 (12.0) 18.00 ? 4.5.1
VS 2015 (14.0) 19.00 ? 4.6
VS 2017 RTW (15.0) 19.10 ? 4.6.1
VS 2017 version 15.3 19.11 ? 4.6.1 (?)
VS 2017 version 15.5 19.12 ? 4.6.1 (?)
VS 2017 version 15.6 19.13 ? 4.6.1 (?)
VS 2017 version 15.7 19.14 ? 4.6.1 (?)
VS 2017 version 15.8 19.15 ? 4.6.1 (?)
VS 2017 version 15.9 19.16 ? 4.6.1 (?)
2022 17.x (?)

Compiler macros

During compilation time, the version of cl can also be determiend with the compiler macros _MSC_VER, _MSC_FULL_VER and _MSC_BUILD:

showCompilerVersion.c

#include <stdio.h>

#define r(mac) #mac
#define s(txt) r(txt)

int main() {
  printf("_MSC_VER      = %s\n", s(_MSC_VER     ));
  printf("_MSC_FULL_VER = %s\n", s(_MSC_FULL_VER));
  printf("_MSC_BUILD    = %s\n", s(_MSC_BUILD   ));
}

Makefile

.SILENT:

showCompilerVersion.exe: showCompilerVersion.obj
	link /nologo showCompilerVersion.obj /out:showCompilerVersion.exe

showCompilerVersion.obj: showCompilerVersion.c
	cl /nologo /c showCompilerVersion.c /FoshowCompilerVersion.obj
Github repository about-cl, path: /preprocessor/version/Makefile

See also

Possibly predefined preprocessor macros
The %VisualStudioVersion% environment variable.
The registry key HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7 lists all installed Visual Studio installations.

Index