Visual Studio下__cplusplus宏为199711L的问题

Visual Studio下__cplusplus宏为199711L的问题

/ Zc:__ cplusplus(启用更新的__cplusplus宏)

该/ ZC:__ CPLUSPLUS编译器选项使__cplusplus预处理宏为最近C ++语言标准的支持报告的更新值。 默认情况下,Visual Studio始终为__cplusplus预处理器宏返回值“199711L” 

句法

/ Zc:__ cplusplus [ - ]

备注

所述__cplusplus预处理宏通常用来报告用于C ++标准的特定版本的支持。 由于许多现有代码似乎依赖于此宏匹配“199711L”的值,因此编译器不会更改宏的值,除非您使用/ Zc:__ cplusplus编译器选项明确选择加入/ ZC:__ CPLUSPLUS选项可用在Visual Studio 2017年开始15.7版本,并且默认是关闭的。在早期版本的Visual Studio中,默认情况下,或者如果指定了/ Zc:__ cplusplus-,Visual Studio将为__cplusplus预处理器宏返回值“199711L” / permissive- 选项不启用/ Zc:__ cplusplus。

当/ ZC:__ CPLUSPLUS启用选项,则所报告的值__cplusplus宏依赖于/ STD版开关设置。 此表显示宏的可能值:

/ Zc:__ cplusplus开关/ std:c ++开关__cplusplus值
Zc:__ cplusplus/ std:c ++ 14(默认)201402L
Zc:__ cplusplus/ STD:C ++ 17201703L
Zc:__ cplusplus/ STD:C ++最新201704L
Zc:__ cplusplus-(禁用)任何价值199711L
未标明任何价值199711L

编译器不支持C ++ 98,C ++ 03或C ++ 11的标准交换机。

要更精细地检测编译器工具集的更改,请使用_MSC_VER预定义宏。 对于Visual Studio 2017及更高版本中的每个工具集更新,此内置宏的值都会递增。无论/ Zc:__ cplusplus选项是启用还是禁用_MSVC_LANG预定义宏都会报告标准版本/ Zc:__ cplusplus启用时, __cplusplus == _MSVC_LANG

在Visual Studio中设置此编译器选项

  1. 打开项目的“ 属性页”对话框。 有关详细信息,请参阅在Visual Studio中设置C ++编译器和构建属性

  2. 选择“ 配置属性” >“ C / C ++” >“ 命令行”属性页。

  3. 将/ Zc:__ cplusplus或/ Zc:__ cplusplus-添加到其他选项:窗格。

参考:

1./ Zc:__ cplusplus(启用更新的__cplusplus宏)


2.VS2017下__cplusplus宏为199711L的问题

转载于:https://www.cnblogs.com/2018shawn/p/11475079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值