首页 > 其他 > 详细

Visual Studio下__cplusplus宏为199711L的问题

时间:2019-09-06 16:23:04      阅读:84      评论:0      收藏:0      [点我收藏+]

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 ++ 17 201703L
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的问题

Visual Studio下__cplusplus宏为199711L的问题

原文:https://www.cnblogs.com/2018shawn/p/11475079.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!