如何在代码中用宏定义确定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

举例:

 

template <typename T>
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
}

欢迎交流与讨论。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值