当前位置: 首页 > news >正文

茶叶网站建设目的免费装修设计图app

茶叶网站建设目的,免费装修设计图app,网片钢筋生产厂家,网站注册人查询使用openMVS库,在VS2022中启用c17标准编译仍然报错 现象 项目中引用了某些开源库(例如openmvs2.1.0),编译时要求启用编译器对c17的支持。 没问题!大家都知道在下图所示的位置调整C语言标准: 但是&#…

使用openMVS库,在VS2022中启用c++17标准编译仍然报错

现象

项目中引用了某些开源库(例如openmvs2.1.0),编译时要求启用编译器对c++17的支持。

没问题!大家都知道在下图所示的位置调整C++语言标准:
在这里插入图片描述
但是,打开开关之后编译,依然报错:

在这里插入图片描述
这可真是一个令人百思不得其解的错误啊。报错的文件是官方的头文件type_traits,双击之后跳转的错误位置也看不出个所以然。

在这里插入图片描述
这下头大了。不过,之前编译openmvs库时,用的是同一版本的VS编译器,怎么就成功了呢?于是查看vcpkg自动编译openmvs时用cmake配置生成的CMakeCache.txt中的编译选项,才找到了真正原因,如下图所示:

在这里插入图片描述
图中标出来的选项是cmake生成的,并不常见,至少在VS2022中没有提供开关,而只能靠用户手动输入到属性页、C/C++、命令行的其他选项框中。

报错原因:__cplusplus

__cplusplus宏是MSVC编译器预定义的宏,它的值是许多语法特性的开关。前面讲了,要启用c++17标准,就在C++语言标准设置好即可。然而,__cplusplus宏值不随上面的C++语言标准/std 选项)设置而改变,需要同时添加:/Zc:__cplusplus编译选项,才能随着语言标准而改变,如下表所示:

/Zc:__cplusplus 选项/std 选项__cplusplus 值
Zc:__cplusplus/std:c++14(默认值)201402L
Zc:__cplusplus/std:c++17201703L
Zc:__cplusplus/std:c++20202002L
Zc:__cplusplus/std:c++latest当前最新日期,目前是202002L
Zc:__cplusplus-(已禁用)任何值199711L
未指定任何值199711L

表中的/std 选项就是上一节的C++语言标准属性。
可见,如果没有添加/Zc:__cplusplus__cplusplus宏的值始终都是199711L,启用的c++17标准也是不完整的。微软这么操作的理由是:有很多老代码写得不规范(不符合语言标准),之前版本的编译器(由于对语言标准的遵守不严格)能编译通过,我们希望使用新编译器时它们的改动也尽可能小。
于是,本来支持严格的标准C++语法的编译器的默认状态仍和原来一样,__cplusplus宏的值始终是199711L;直到开发者在编译器的命令行中加入/Zc:__cplusplus,它才真正变成实际使用语言标准的值。

其实多数情况下,__cplusplus宏的值对代码编译影响不大。但是很多高水平开源库使用了新语法,恰恰需要__cplusplus宏的值符合语言标准(/std 选项)才能编译通过,这是对开源开发者很不友好的。

P.S. 官方的愿景是,有朝一日仅需要设定/std 选项__cplusplus宏的值就随之改变,不需要额外添加/Zc:__cplusplus

解决方法

属性页—C/C++—命令行—其他选项中添加:/Zc:__cplusplus。重新编译,即可。

在这里插入图片描述

扩展阅读

/Zc-cplusplus的微软官方说明
C++语言标准切换选项
官方:终于能正确设定__cplusplus值了

用/std选项确定c/c++语言标准
强制符合语法标准选项/permissive-

一点认识:MSVC的C/C++编译器默认情况下实现了当前标准和未来一些标准中的语法。当指定语言标准为默认的/std:c++14时,大部分新标准的语法将被禁用,但仍有一部分在引入/std选项之前就实现的新语法标准可用。
但指定/std:c++xx(xx>14)时,新实现的c++xx以后的语法将不可用。

http://www.yayakq.cn/news/494805/

相关文章:

  • 什么网站可以找到防水工程做查品牌的软件有什么
  • 贵州成品网站专门为网站建设服务的公司
  • 北京网站建设哪家好昆明做网站哪家便宜
  • 西安网站 技术支持牛商网如何建设网站后台
  • 网站做程序员成都营销推广公司
  • 做网站是自己公司做好还是外包好网站推广的途径和推广要点
  • 购物网站开发的背景腾讯做的导购网站
  • 西宁圆井模板我自己做的网站采购需求发布平台
  • 页面做的好看的网站个人网站备案备注写什么
  • 网站建设条件招聘wordpress有赞支付插件
  • 网站建设上线企业电子商务网站建设的重要性
  • ps为什么做不了视频网站设计网站推荐平面
  • 亳州建设网站公司推广发帖网站怎么做
  • html5购物网站源码seo公司是什么
  • 软文发布门户网站怎么做一个微信公众号
  • php的网站怎么做百度网盟推广太恶心
  • 廊坊建设银行网站官网优化哪家专业
  • 南昌企业网站建设公司天凡建设股份有限公司网站
  • 广州优质网站建设案例一键制作网站
  • 自适应网站如何做mip网页凌晨三点看的片免费
  • 推荐微网站建设wordpress 加上广告
  • 本地的丹阳网站建设深圳手机端网站建设设计公司
  • 昆明网站建设推荐wordpress临时关闭站点
  • 微网站可以自己做吗宁波市住宅建设集团网站
  • 扬中网站建设案例wordpress 多条件查询数据库
  • app软件开发就是网站开发吗天商阳光网站邮箱
  • 龙华做企业网站wordpress 应用店商
  • 北京怀柔网站制作医疗网站设计网站
  • 青岛做公司网站的多吗广州网站建设价格
  • php做网站python做什么网站商场模板