如何在代码中用宏定义确定VS编译器版本

我们经常需要将同一个代码文件在不同的编译器下编译,实际上对应着不同的代码,这个时候就可以使用宏定义来进行判断,比如如下代码:

#if _MSC_VER >=1900 // VS2015或者以上
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#endif

只有在VS2015或者以上的版本中,中间的代码才生效,那么实际上我们可能需要对很多不同的编译器版本进行判断,于是下方我整理了我们常常需要判断的VS的编译器版本。

 1、VS各版本与MSVC对照表
IDE 发布时间     发布时间  工具集版本 	MSC_VER
Visual C++6.0 1998 	1998	V60 	1200 	MSVC++ 6.0
Visual Studio 2002 	2002 	V70 	1300 	7.0
Visual Studio 2003 	2003 	V71 	1310 	7.1
Visual Studio 2005 	2005 	V80 	1400 	8.0
Visual Studio 2008 	2008 	V90 	1500 	9.0
Visual Studio 2010 	2010 	V100 	1600 	10.0
Visual Studio 2012 	2012 	V110 	1700 	11.0
Visual Studio 2013 	2013 	V120 	1800 	12.0
Visual Studio 2015 	2015 	V140 	1900 	14.0
Visual Studio 2017 	2017 	V141 	1910 	14.1
Visual Studio 2019 	2019 	V142 	1920 	14.2
Visual Studio 2022 	2022 	V143 	1930 	14.3

举例:

如何在代码中用宏定义确定VS编译器版本_第1张图片

 

template 
inline void* CStdTpl::ConvertFromString(T &value, const _tstring &s)
{
#ifdef _UNICODE
	std::wstringstream ss(s);
#else
	std::stringstream ss(s);
#endif

#if _MSC_VER >=1900 // VS2015或者以上
	ss >> value;
	return &value;
#else
	return ss >> value;
#endif
}

欢迎交流与讨论。

你可能感兴趣的:(c++,c++,windows)