Tag Archives: Macro

Using ‘_MSC_VER’ to check Microsoft Visual Studio version

If you develop applications for Windows using a Microsoft Visual C++ Compiler,  you may use the macro ‘_MSC_VER’ to check what compiler (version) you are using my latest blog post. Newer compilers have more possibilities of course or (more worse) things have just changed. So if you want (or must) support older ones you have to split your code.

The (current) values are:

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

And here is a simple example how to use it:

#if (_MSC_VER >= 1600)  /*Visual Studio 2010*/
typedef /*unsigned*/ char mychar8; /**< defines the utf-8 character type. */
typedef wchar_t mychar16; /**< defines the utf-16 character type. */
#else /*(_MSC_VER >= 1600)*/
typedef /*unsigned*/ char mychar8; /**< defines the utf-8 character type. */
typedef unsigned short mychar16; /**< defines the utf-16 character type. */
#endif /*(_MSC_VER >= 1600)*/