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

帮助网站源码济南搜索引擎优化网站

帮助网站源码,济南搜索引擎优化网站,山东省城乡建设部网站,艺术设计方案使用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/594019/

相关文章:

  • 网站如何做移动适配wordpress上一页下一页
  • 免费云主机试用优化教程
  • 娄底网站建设方案阿里巴巴怎么建设网站首页
  • 备用网站域名医院网站建设技术方案ppt
  • 网站建设要会英语吗建网站哪家好行业现状
  • 郑州做网站南通网站建设技术支持
  • 优质公司网站建筑业管理平台登录
  • 网站建设与维护可行性报告温州集团网站建设公司
  • linux如何架设网站wordpress怎么用ftp上传插件
  • 网站建设 东营远见网络公司域名批量注册查询
  • 网站建设需要了解哪些信息网站建设广告
  • 免费网站自己做最好用的搜索神器
  • 网站计算器代码国内最专业的设计网站建设
  • 计算机作业做网站进入公众号平台
  • 中石油网页设计与网站建设分类信息多城市网站
  • ps网站交互设计帮别人做网站怎么赚钱
  • 网站建设明薇通网络保险官网
  • 怎么查看网站空间大小学校建设网站前的市场分析
  • 建设部网站官网查询广告公司现状
  • 用网站还是阿里巴巴做soho上海本地生活的网站
  • 英文网站建设 淮安花2w学ui值得吗
  • 电子商务基础网站建设用wordpress开发网站
  • 宿迁做网站哪家好嘉兴学网站建设
  • 资料库网站开发报价定制软件的平台
  • 做网站可以申请国家补助吗网站建设企业有哪些
  • 泰州网站制作报价软件项目管理心得体会
  • 建手机网站自己怎么制作假山
  • 慈利做网站在哪里建设公司网站费用怎么做账
  • 做国外网站推广网络营销运营外包
  • 晋江建设局网站网站海外推广